//正交缩放操作可通过投影矩阵的参数配置进行调整 //旋转除了旋转模型外,也可以改变相机位置和相机观察方向进行 //在MouseMove事件中计算旋转四元数 //float dx = e.X - _lastMousePos.X; //float dy = e.Y - _lastMousePos.Y; // 根据鼠标移动量计算旋转角度 //var roation_dx = dy / _radius; //var rotaion_dy = dx / _radius; //_rotationX += roation_dx; //_rotationY += rotaion_dy; //Quaternion rotationX = Quaternion.FromAxisAngle(Vector3.UnitX, dy / _radius); //Quaternion rotationY = Quaternion.FromAxisAngle(Vector3.UnitY, dx / _radius); // 更新四元数 //_rotation = rotationY * rotationX * _rotation; //_rotation = Quaternion.Normalize(_rotation); //var eye = new Vector3(_mc.X, _mc.Y, _mc.Z + _radius * 2); //var target = _mc; //var up = Vector3.UnitY; //_rotation = Quaternion.Identity; //var rotationX = Quaternion.FromAxisAngle(Vector3.UnitX, _rotationX); //var rotationY = Quaternion.FromAxisAngle(Vector3.UnitY, _rotationY); //_rotation = rotationY * rotationX * _rotation; //_rotation.Normalize(); //var matrix = Matrix4.CreateFromQuaternion(_rotation); //matrix.Invert(); //eye = Vector3.TransformPosition(eye, matrix); //up = Vector3.TransformPosition(up, matrix); //_viewMatrix = Matrix4.LookAt(eye, target, up); //_forward = target - eye; //_forward.Normalize();