Math x和y旋转的三维矢量坐标

Math x和y旋转的三维矢量坐标,math,vector,3d,Math,Vector,3d,我曾多次尝试用谷歌搜索这个问题,但我只找到了关于“旋转矩阵”的文章 我有3d坐标系和两个角度:α用于x轴旋转和β用于y轴旋转(我不确定是否在图表中正确定位了角度) 我需要找到向量的坐标(x_1,y_1,z_1) 请帮我算出公式。让我们将其分解为两个变换 从单位向量(0,0,1)开始,我们将首先应用alpha变换 可以将围绕y轴的旋转视为二维变换,并完全忽略y轴。然后它变成了简单的trig,用变换角(alpha)的cos和sin得到x和z分量。我们知道向量的长度是1,因为它是一个单位向量,但是

我曾多次尝试用谷歌搜索这个问题,但我只找到了关于“旋转矩阵”的文章

我有3d坐标系和两个角度:
α
用于x轴旋转和
β
用于y轴旋转(我不确定是否在图表中正确定位了角度)

我需要找到向量的坐标(x_1,y_1,z_1)


请帮我算出公式。

让我们将其分解为两个变换

从单位向量(0,0,1)开始,我们将首先应用alpha变换

可以将围绕y轴的旋转视为二维变换,并完全忽略y轴。然后它变成了简单的trig,用变换角(alpha)的cos和sin得到x和z分量。我们知道向量的长度是1,因为它是一个单位向量,但是你的向量可以是任意长度——只要把cos和sin方程乘以向量的长度

第一个转换留给我们的公式是:

(x1,y,z1)=>(sin(alpha),0,cos(alpha))

假设变换角度从+z轴开始,并且随着其增加,该角度围绕y轴(或在XZ平面上)逆时针移动

对于第二个变换,我们绕着垂直于向量的轴旋转。我们将做一些非常类似的事情,但这次用x1和z1替换我们的新值sin(alpha)和cos(alpha)

得到y1和之前一样简单,就像得到β角的sin一样,但是变换x1和z1需要我们用这个三角形的余弦分量来缩放x1和z1。这是因为x1和z1之间的关系不会随着我们绕垂直轴旋转而改变

想象一个圆心在原点,圆周上的一个点在(x1,0,z1)处的圆。当我们围绕那个圆旋转向量时,x1和z1相对于中心点缩放,但它们的比率不变

我们所要做的就是用贝塔角的余弦分量来缩放这两个数字。我在这贴上了欧米茄的标签

这给我们留下了一个最终的计算公式


(x2,y1,z2)=>(cos(beta)*sin(alpha),sin(beta),cos(beta)*cos(alpha))

那么您正试图以alpha和beta的角度围绕x和y轴旋转向量(x,y,z)?我只是想了解你们想要的输入和输出,我想找到这个向量的坐标。在程序开始时,角度是
x=0
y=0
是,但矢量是什么?它看起来像是从(x,y,z)=>(1,0,0)的单位向量开始,然后围绕z轴逆时针旋转β弧度,然后围绕y轴顺时针旋转α弧度,对其进行变换。对吗?我想,α角放错了位置,所以向量有坐标
(0,0,1)
,但α是绕y轴旋转,β是绕z轴旋转?我不明白,我做错了什么。我只是将方向向量添加到我的位置:
camera=camera+dir
,它的工作原理很奇怪。我就是这样使用它的:
float alpha=theta.x;浮动β=θy;向量dir(cos(beta)*sin(alpha),sin(beta),cos(beta)*cos(alpha));摄像机=摄像机+方向前向向量的Z分量不变。你能给我看看你的代码实现吗?同样在这个速度下,你可能只需要相机的前向矢量。如果可以的话,显示θ的来源,以及在左上角X,Y和Z的设置。另外,我不使用Z分量,所以它总是0