gpt4 book ai didi

c# - 如何计算手机平放时绕 y 轴(滚动)的旋转?

转载 作者:太空狗 更新时间:2023-10-29 17:54:35 25 4
gpt4 key购买 nike

这几行 C# 代码使用加速度计计算手机绕 y 轴的旋转:

private float GetRoll() {
/*
* Sum up the accelerometer events
*/
Vector3 accelerationVector = Vector3.zero;
for (int i=0; i < Input.accelerationEventCount; i++) {
AccelerationEvent accEvent = Input.GetAccelerationEvent(i);
accelerationVector += accEvent.acceleration * accEvent.deltaTime;
}
accelerationVector.Normalize();

int inclination = (int) Mathf.Round(Mathf.Rad2Deg * Mathf.Acos(accelerationVector.z));
float roll = 0;
if (inclination < 25 || inclination > 155) {
/*
* How to calculate the rotation here?
*/
} else {
roll = Mathf.Round(Mathf.Rad2Deg * Mathf.Atan2(accelerationVector.x, accelerationVector.y));
}
return roll;
}

如果手机平放在 table 上,您知道如何让它正常工作吗? IE。如果 inclination 小于 25 度或大于 155 度?代码来源于this SO post其中提到可以使用指南针。不幸的是我不知道如何,所以非常感谢您的建议。另外,如果可能的话,我想避免使用陀螺仪,而是坚持使用加速度计。

欢迎任何建议。谢谢。

最佳答案

为什么不用陀螺仪?

如果您仔细考虑一下,如果旋转轴与加速度之和完全平行,那么从物理上来说似乎不可能从加速度向量中获取任何类型的旋转信息。

(也许你可以从向心力得到它的速度,但没有别的。)

关于c# - 如何计算手机平放时绕 y 轴(滚动)的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45058578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com