这可能更像是一个线性代数问题,但是说我有一个SCNVector,并且我想要一个新的SCNVector,它与y轴(或任何轴)之间的角度与原始角度成一定角度。如此理想地:围绕一个轴旋转SCNVector3
extension SCNVector3 {
// assume dot, cross, length, +, - functions are available.
enum Axis {
case x, y, z
}
func rotatedVector(aroundAxis: Axis, angle: Float) -> SCNVector3 {
// code from smart person goes here
}
}
例如(0,0,-1).rotatedVector(aroundAxis: y, angle: pi/2) = (1,0,0)
谢谢!
是右手还是左手单位空间? –
Emm ...我总是用旋转角度theta - 右手处理 - 逆时针方向的CCW。似乎在包含矢量产品的第二个术语中,这一点很重要。但它也包含正弦函数,所以我不能说 - 手持是否影响结果 - 这取决于关于角度方向的约定。 – MBo