点投影到yx旋转平面

时间:2014-03-25 16:56:15

标签: simulation point projection depth

我想在2D空间中模拟深度,如果我有一个点P1,我想我需要投影给定点P1到平面x轴顺时针旋转“theta”rads得到P1'

似乎P1'.x坐标必须与P1.x和P1'相同。它必须比P1.y短。在3D世界中:

cosa = cos(theta)
sina = sin(theta)
P1'.x = P1.x
P1'.y = P1.y * cosa - P1.z * sina
P1'.z = P1.y * sina + P1.z * cosa

我的P1.z = 0吗?我试过了,P1'.y = P1.y * cosa没有按预期结果

任何回复都将不胜感激,谢谢!

编辑:我想要的,现在我旋转相机并翻译矩阵 enter image description here

编辑2:具有start1点和end1点的单行示例(它是一条水平线,只要倾斜角度增加,预期结果就是到“floor”的下降线)

enter image description here

我认为这是一个符号错误或需要的偏移量(java画布图(0,0)位于左上角),因为我的新行倾斜度为0,是一个低于所有值且值为90º的行新线和原始线匹配

1 个答案:

答案 0 :(得分:0)

如果要围绕x轴顺时针旋转,则执行的计算是正确的。如果您认为您的线条是一张纸,那么您可以直接看到该线的0度旋转。

对于您给出的示例,该行与x轴水平。这不会改变围绕x轴的旋转(线和它旋转的轴彼此平行)。当你在0到90度之间旋转时,线的y坐标会随着P1.y * cos(theta)在90度下降到0而下降(考虑一下我们围绕它的底边旋转的那张纸, x轴,90度纸张是平的,y轴垂直于页面,因此页面的两个边缘具有相同的y坐标,两侧是“x轴”和相反的平行方将有y = 0)。

因此,您可以看到您的示例,这已正常工作。

编辑:乘以90度的原因并不能给出完全零答案的原因只是floating point rounding