OpenGL gl = sceneControl.OpenGL;
switch (e.Button)
{
case MouseButtons.Left:
objectArcBallEffect.ArcBall.MouseMove(e.X, e.Y);
axisArcBallEffect.ArcBall.MouseMove(e.X, e.Y);
anglXY=? //视角,在XY平面上,绕Z轴,以X正向开始
anglXZ=? //仰角,在XZ平面上,绕X轴,以Z正向开始
break;
}
您好,这个问题我可以回答你,我在之前做过D3D透视功能,其中就用到了矩阵转换以及弧度转角度,可以通过以下方式计算水平视角(anglXY)和仰角(anglXZ)
switch (e.Button)
{
case MouseButtons.Left:
objectArcBallEffect.ArcBall.MouseMove(e.X, e.Y);
axisArcBallEffect.ArcBall.MouseMove(e.X, e.Y);
// 获取ArcBall的旋转矩阵
var objectRotationMatrix = objectArcBallEffect.ArcBall.RotationMatrix;
var axisRotationMatrix = axisArcBallEffect.ArcBall.RotationMatrix;
// 根据旋转矩阵计算水平视角和仰角
anglXY = Math.Atan2(objectRotationMatrix[1, 0], objectRotationMatrix[0, 0]);
anglXZ = Math.Atan2(axisRotationMatrix[2, 0], axisRotationMatrix[1, 0]);
// 将弧度转换为角度(可选)
anglXY = anglXY * 180 / Math.PI;
anglXZ = anglXZ * 180 / Math.PI;
break;
}
提醒您,不要去做外G奥。