我试图呈现一个简单的轴显示如下,除了使用简单的二维线。
c - 如何在给定的俯仰,滚动和偏航的情况下渲染3D轴?-LMLPHP
我有轴应该显示的俯仰、偏航和横滚的角度值。(例如PI/2、PI/4、PI*3/2)
我有一个函数,可以渲染二维线给定的起点和终点在二维空间。
在给定角度的情况下,如何正确渲染旋转的轴集?我不关心Z索引(所以,如果有时候这些行不正确地出现在上面,只要它们指向正确的方向就行了)。
我试过的
我知道所有直线的起点都在轴的中心,我们会说中心在(0, 0),轴的长度是100。这就需要我计算三个轴的端点。
我已经定义了X轴为左到右,Y轴为上下,Z轴为后退(即脱离屏幕)。
螺距是绕X轴旋转,滚转是绕Z轴旋转,偏航是绕Y轴旋转。
计算X轴终点我已经做了:

x = cos(roll) * cos(yaw) * 100;
y = sin(-roll) * 100;

计算y轴端点:
x = cos(roll + PI/2) * 100;
y = sin(-roll - PI/2) * sin(PI/2 - pitch) * 100;

计算Z轴端点:
x = cos(PI/2 - yaw) * 100;
y = sin(PI - pitch) * 100;

很明显我不知道自己在做什么。我觉得当我应该使用一些更高级的东西,比如矩阵时,我采取了一种非常幼稚的方法。如果有区别的话,我用的是C,但是psuedocode没问题。任何帮助都将不胜感激。

最佳答案

首先,你们需要就旋转的顺序达成一致。在下面,我假设顺序是x,y,z(俯仰,偏航,横滚)。
端点只是accordingrotation matrix的列向量。然后,需要将三维点投影到二维屏幕上。似乎使用了一个简单的正交投影(删除z坐标)。结果如下:

x1 = 100 (cos yaw * cos roll)
y1 = 100 (cos pitch * sin roll + cos roll * sin pitch * sin yaw)

x2 = 100 (-cos yaw * sin roll)
y2 = 100 (cos pitch * cos roll - sin pitch * sin yaw * sin roll)

x3 = 100 (sin yaw)
y3 = 100 (-cos yaw * sin pitch)

09-27 04:00