如何围绕Z轴绕3D运行

enz*_*uri 4 c++ math geometry openframeworks

我主要是一个Flash AS3开发人员,但是我跳进了openframeworks并且在使用3D时遇到了麻烦(这些例子在AS中)

在2D中,您可以使用Math.Sin()和模拟围绕点旋转的对象Math.cos(),就像这样

function update(event:Event):void
{
    dot.x = xCenter + Math.cos(angle*Math.PI/180) * range;
    dot.y = yCenter + Math.sin(angle*Math.PI/180) * range;
    angle+=speed;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如果我想在第三维轨道运行,我将如何将其转换为3D轨道.

function update(event:Event):void
{
    ...
    dot.z = zCenter + Math.sin(angle*Math.PI/180) * range;
    // is this valid?
}
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助.

Blu*_*eft 5

如果围绕z轴进行轨道运动,则会保持z坐标不变并更改x坐标和y坐标.所以你的第一个代码示例就是你要找的.

要围绕x轴(或y轴)旋转,只需替换x(或y)z.Cos在你想要的任何轴上使用0度; 选择是任意的.

如果您有什么真正想要的是围绕轨道在三维空间中的点的对象,你需要两个角度来描述轨道:它的仰角倾角.看到这里这里.
作为参考,那些方程是(其中θ和φ是你的角度)

x = x 0 + r sin(θ)cos(φ)
y = y 0 + r sin(θ)sin(φ)
z = z 0 + r cos(θ)