Matrix 根据YXZ世界中的旋转矩阵计算ARKit-Calc-euler角
我需要欧拉角的数学帮助,特别是ARKit 我查阅了许多有关欧拉角计算的参考资料,但我想知道为什么苹果在其教程中从atan2(r11,r12)计算偏航,如下所示:Matrix 根据YXZ世界中的旋转矩阵计算ARKit-Calc-euler角,matrix,camera,rotation,transformation,arkit,Matrix,Camera,Rotation,Transformation,Arkit,我需要欧拉角的数学帮助,特别是ARKit 我查阅了许多有关欧拉角计算的参考资料,但我想知道为什么苹果在其教程中从atan2(r11,r12)计算偏航,如下所示: let yaw = atan2f(camera.transform.columns.0.x, camera.transform.columns.1.x) 例如,如果我需要计算纵摇或横摇,如何计算 我需要理解偏航以及为什么它们不总是依赖于偏航=camera.eularAngle.y 请检查此代码和评论中的问题,我很困惑 // why
let yaw = atan2f(camera.transform.columns.0.x, camera.transform.columns.1.x)
例如,如果我需要计算纵摇或横摇,如何计算
我需要理解偏航以及为什么它们不总是依赖于偏航=camera.eularAngle.y
请检查此代码和评论中的问题,我很困惑
// why based on this?
let tilt = abs(camera.eulerAngles.x)
// why * 0.65 or * 0.75
let threshold1: Float = .pi / 2 * 0.65
let threshold2: Float = .pi / 2 * 0.75
// calculate yaw angle
let yaw = atan2f(camera.transform.columns.0.x, camera.transform.columns.1.x)
var angle: Float = 0
switch tilt {
case 0..<threshold1:
angle = camera.eulerAngles.y
case threshold1..<threshold2:
let relativeInRange = abs((tilt - threshold1) / (threshold2 - threshold1))
let normalizedY = normalize(camera.eulerAngles.y, forMinimalRotationTo: yaw)
angle = normalizedY * (1 - relativeInRange) + yaw * relativeInRange
default:
angle = yaw
}
self.rotation = SCNVector4(0, 1, 0, angle)
在大多数参考文献中考虑ZUP所以它是偏航,但是在ARKIT-Y-UP中,那么计算有什么不同?? 我只需要理解,我不需要代码来工作!!如果有人帮助我,我将非常感激他
| cos a 0 sin a |
| 0 1 0 |
| -sin a 1 cos a |
||
| r11 r12 r13 |
| r21 r22 r23 |
| r31 r32 r33 |