Как можно вписать окружности в грани данного куба?
import numpy as np
from matplotlib.patches import Ellipse
import matplotlib.pyplot as plt
# Задаем начальные значения углов alpha и beta
alpha_rad, beta_rad = np.radians(int(input("Введіть кут α: "))), np.radians(int(input("Введіть куб β: ")))
# Задаем координаты вершин куба
vertices = np.array([[-1, -1, -1],
[1, -1, -1],
[1, 1, -1],
[-1, 1, -1],
[-1, -1, 1],
[1, -1, 1],
[1, 1, 1],
[-1, 1, 1]])
# Отображаем проекцию куба на графике
fig = plt.figure()
ax = fig.add_subplot(111)
# Матрица претворения
transform_matrix = np.dot(
np.array([[1, 0, 0],
[0, np.cos(alpha_rad), np.sin(alpha_rad)],
[0, -np.sin(alpha_rad), np.cos(alpha_rad)]]),
np.array([[np.cos(beta_rad), 0, -np.sin(beta_rad)],
[0, 1, 0],
[np.sin(beta_rad), 0, np.cos(beta_rad)]]))
projected_vertices = np.dot(vertices, transform_matrix)
# Отрисовываем куб для начальных углов и вписываем окружности в грани куба
for i in range(0, 4):
# Отрисовываем ребра куба
ax.plot([projected_vertices[i, 0], projected_vertices[(i + 1) % 4, 0]],
[projected_vertices[i, 1], projected_vertices[(i + 1) % 4, 1]])
ax.plot([projected_vertices[i + 4, 0], projected_vertices[((i + 1) % 4) + 4, 0]],
[projected_vertices[i + 4, 1], projected_vertices[((i + 1) % 4) + 4, 1]])
ax.plot([projected_vertices[i, 0], projected_vertices[i + 4, 0]],
[projected_vertices[i, 1], projected_vertices[i + 4, 1]])
plt.show()
Пример результата как должно выглядить вписанная окружность в одной из граней
Источник: Stack Overflow на русском