Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用AxisAngleRotation3D的摄影机旋转_C#_Rotation_Transform_Kinect Sdk - Fatal编程技术网

C# 使用AxisAngleRotation3D的摄影机旋转

C# 使用AxisAngleRotation3D的摄影机旋转,c#,rotation,transform,kinect-sdk,C#,Rotation,Transform,Kinect Sdk,我正在使用kinect v2 sdk 2.0进行相机旋转(而非几何旋转)有人能告诉我哪种方法更适合查找需要旋转的向量或使用四元数吗?我在应用程序中使用以下代码得到一些奇怪的旋转: double sum = Math.Sqrt(Math.Pow(rotX, 2) + Math.Pow(rotY, 2) + Math.Pow(rotZ, 2)); static double rotX = 0; static double rotY = 0; static double rotZ = 0; stati


我正在使用kinect v2 sdk 2.0进行相机旋转(而非几何旋转)
有人能告诉我哪种方法更适合查找需要旋转的向量或使用四元数吗?
我在应用程序中使用以下代码得到一些奇怪的旋转:

double sum = Math.Sqrt(Math.Pow(rotX, 2) + Math.Pow(rotY, 2) + Math.Pow(rotZ, 2));
static double rotX = 0;
static double rotY = 0;
static double rotZ = 0;
static RotateTransform3D trRot = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(rotX, rotY, rotZ), 0));
if (gesture == GestureRecognition.rotation.ClockwiseYaw)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(rotX / sum, rotY / sum, -rotZ / sum), rotZ -= 5);
    if (rotZ == 360)
    {
        rotZ = 0;
    }
}
else if (gesture == GestureRecognition.rotation.CounterClockwiseYaw)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(rotX / sum, rotY / sum, -rotZ / sum), rotZ += 5);
    if (rotZ == 360)
    {
        rotZ = 0;
    }
}
else if (gesture == GestureRecognition.rotation.ClockwisePitch)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(rotX / sum, -rotY / sum, rotZ / sum), rotY -= 5);
    if (rotY == 360)
    {
        rotY = 0;
    }
}
else if (gesture == GestureRecognition.rotation.CounterClockwisePitch)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(rotX / sum, -rotY / sum, rotZ / sum), rotY += 5);
    if (rotY == 360)
    {
        rotY = 0;
    }
}
else if (gesture == GestureRecognition.rotation.TiltUp)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(-rotX / sum, rotY / sum, rotZ / sum), rotX += 5);
    if (rotX == 360)
    {
        rotX = 0;
    }
}
else if (gesture == GestureRecognition.rotation.TiltDown)
{
    myCamera.Transform = trRot;
    trRot.Rotation = new AxisAngleRotation3D(new Vector3D(-rotX / sum, rotY / sum, rotZ / sum), rotX -= 5);
    if (rotX == 360)
    {
        rotX = 0;
    }
}
else if (gesture == GestureRecognition.rotation.NothingRecognized)
{
    myCamera.Position = new Point3D(myCamera.Position.X, myCamera.Position.Y, myCamera.Position.Z);
}