double = rollingZ = acceleration.x;
double = rollingX = acceleration.y;
if (rollingZ > 0.0) {
self.centerCoordinate.inclination = atan(rollingX / rollingZ) + M_PI / 2.0; //LINE 1
}
else if (rollingZ < 0.0) {
self.centerCoordinate.inclination = atan(rollingX / rollingZ) - M_PI / 2.0; // LINE 2
}
else if (rollingX < 0) {
self.centerCoordinate.inclination = M_PI/2.0; //atan returns a radian
}
else if (rollingX >= 0) {
self.centerCoordinate.inclination = 3 * M_PI/2.0;
我只是想完全理解这段代码。我想在iPhone上构建AR应用程序,这个代码的功能是使用加速度计读数计算设备倾斜角度。
我的理解是:
假设以竖屏方向为基准,如果我将设备向前滚动,则加速度计的x轴值会增加到-1.0(即设备平放,屏幕朝上)。如果我将设备向我倾斜,则x轴值增加到1.0(直到设备平放在地面上)。
y轴沿其轴线上下变化,在-1.0和0.0之间(0表示设备水平)。
如果我们取一些示例读数,例如x = 0.5(-45度角,将设备向我倾斜),y = 0.8。如果我在笛卡尔坐标图上绘制这些数据,其中y(rollingX作为垂直轴)和x(rollingZ作为水平轴),并在它们之间画一条线,我理解我可以使用反正切函数(atan)来计算角度。我的困惑出现在第1行。我不明白为什么该行要将计算出的角度加上90度(以弧度表示)?
我似乎无法在图表上想象发生了什么。如果有人能为我解惑,那将不胜感激。