gpt4 book ai didi

python - 使用矩阵变换和 numpy 将立方体投影到平面上

转载 作者:太空狗 更新时间:2023-10-30 01:17:54 25 4
gpt4 key购买 nike

我不确定这个主题更适合放在这里还是更适合数学溢出。因为我使用的是 numpy,所以我想我应该把它贴在这里。

我正在尝试在 3 维空间中旋转立方体,然后将其投影到二维平面上。

我从单位矩阵开始:

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)

此时我有一个新的基础空间,它已绕 Y 轴旋转 30 度。

现在,我想将其投影到二维空间中。我想,这个新空间基本上是 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      ])

这种检查,因为两个点都被压平为同一事物。然而,Z轴的-0.5是什么?它代表什么?

转换后 Z 轴上存在一个值让我认为我的方法不正确。如果我以错误的方式进行此操作,请告诉我。

最佳答案

正如@PaulPanzer 所指出的,我从错误的方向点缀新矢量。解决方法是

np.dot(NE_1, NEW_SPACE)

关于python - 使用矩阵变换和 numpy 将立方体投影到平面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com