這可能更像是一個線性代數問題,但是說我有一個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