我想在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没有按预期结果
任何回复都将不胜感激,谢谢!
编辑:我想要的,现在我旋转相机并翻译矩阵编辑2:具有start1点和end1点的单行示例(它是一条水平线,只要倾斜角度增加,预期结果就是到“floor”的下降线)
我认为这是一个符号错误或需要的偏移量(java画布图(0,0)位于左上角),因为我的新行倾斜度为0,是一个低于所有值且值为90º的行新线和原始线匹配
答案 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