iso:触摸移动时获取x,y,z角度

时间:2013-08-23 09:26:18

标签: 3d iso

当手指触摸移动时,我正在研究旋转图像!并且我不知道当触摸移动发生时如何获得x,y,z旋转角度。有人知道吗?请帮忙,tks!

1 个答案:

答案 0 :(得分:0)

通过X / Y / Z旋转,我假设您想要一些像控件小部件那样的轨迹球。要实现这一点,您需要研究使用四元数。

对于更简单的旋转形式,请将滚动归零,并将x移动映射到偏航和y移动到俯仰......

dx = x - lastX;
dy = y - lastY;
rotation.x -= dy;
rotation.y += dx;
rotation.z = 0;

然后夹住旋转,使偏航运动不会反转

rotation.y = min(max(rotation.y, -pi/2), pi/2);

或者,如果要在拖动时找到围绕屏幕中心的旋转...

midX = screenWidth/2;
midY = screenHeight/2;
downAngle = atan2(downX-midX, downY-midY); //angle from +x to start position of rotation
upAndle = atan2(upX-midX, upY-midY); //angle from +x to current position
angle = upAndle - downAngle; //difference between them
if (angle > pi) angle -= 2*pi; //keep angle less than 180 degrees in either direction
if (angle < -pi) angle += 2*pi;