Я не был уверен, подходит ли эта тема лучше здесь или о математическом переполнении.Поскольку я использую NumPy, я решил опубликовать его здесь.
Я пытаюсь повернуть куб в 3-мерном пространстве и затем спроецировать его на 2-мерную плоскость.
Я начинаю с Матрицы Идентий:
import numpy as np
I = [[1,0,0],
[0,1,0],
[0,0,1]]
Затем я применяю вращательное преобразование к Оси Y:
from math import sin, cos
theta = radians(30)
c, s = cos(theta), sin(theta)
RY = np.array([[c, 0, s],[0, 1, 0], [-s, 0, c]])
# at this point I'd be dotting the Identiy matrix, but I'll include for completeness
I_RY = np.dot(I, RY)
В этот момент у меня есть новое базисное пространство, которое было повернуто30 градусов вокруг оси Y.
Теперь я хочу проецировать это на 2-мерное пространство.Я полагал, что это новое пространство в основном является базисом идентичности с нулевой осью Z:
FLAT = [[1,0,0],
[0,1,0],
[0,0,0]]
Итак, теперь я полагаю, что могу составить это, чтобы завершить полное преобразование из куба в квадрат:
NEW_SPACE = np.dot(I_RY, FLAT)
Осталось только преобразовать точки исходного куба.Предполагая, что в исходном кубе его северо-восточные точки установлены на [1,1,1] и [1,1, -1], я могу получить новые точки, например, так:
NE_1 = np.array([1,1,1])
NE_2 = np.array([1,1,-1])
np.dot(NEW_SPACE, NE_1)
np.dot(NEW_SPACE, NE_2)
Однако это даетмне следующее:
array([ 0.8660254, 1. , -0.5 ])
Этот вид проверок, потому что обе точки были сведены к одной и той же вещи.Однако что такое -0.5
на оси Z?Что это представляет?
Наличие значения на пост-преобразовании оси Z заставляет меня думать, что мой метод неверен.Пожалуйста, скажите мне, если я поступаю неправильно.