小编Mac*_*ite的帖子

围绕原点旋转3d

我知道有很多关于3d旋转的问题已在这里得到解答,但它们似乎都处理OpenGL中的旋转矩阵和四元数(我并不关心我是否得到万向节锁定).我需要获得一个始终必须是相同距离的点的三维坐标EX:(x,y,z),我现在称之为"d",来自原点.我输入的唯一信息是鼠标在屏幕上的deltax和deltay.到目前为止,这是我尝试过的:

第一:

thetaxz+=(omousex-mouseX)/( width ); 
thetaxy+=(omousey-mouseY)/( height);
Run Code Online (Sandbox Code Playgroud)

(thetaxy是x,y轴上的弧度角和x,z轴上的thetaxz)(我限制两个角度,这样如果它们小于或等于0,则它们等于2*PI)

第二:

pointX=cos(thetaxz)*d;
pointY=sin(thetaxy)*d;
Run Code Online (Sandbox Code Playgroud)

(pointX是点的x坐标,pointY是y)

第三:

if(thetaxz)<PI){
 pointZ=sqrt(sq(d)-sq(eyeX/d)-sq(eyeY/d));
}else{
  pointZ=-sqrt(abs(sq(d)-sq(eyeX/d)-sq(eyeY/d)));
}
Run Code Online (Sandbox Code Playgroud)

(sq()是square和abs()是绝对值函数的函数)(pointZ应该是点的z坐标,除了在正z半球和负z半球之间的交叉处.它接近边缘点得到的拉伸距离总是应该在x和y处的距离,并且看似随机地约为0.1-0.2弧度的θ坐标,z坐标变为NAN或未定义)

我已经考虑了一段时间了,说实话,我很难绕过四元数和旋转矩阵的概念,但如果你能告诉我如何使用它们来生成实际坐标,我很乐意学习.如果我可以在几个轴上使用一些三角法,我仍然会更喜欢它.提前感谢您的帮助,如果您需要更多信息,请询问.

提示/最后一刻的想法:我认为这可能与影响x和y位置的z位置有关,但我不确定.

编辑:我画了一个图: 在此输入图像描述

math 3d trigonometry rotation

7
推荐指数
1
解决办法
9917
查看次数

标签 统计

3d ×1

math ×1

rotation ×1

trigonometry ×1