Exemple #1
0
        public static void GetCalibrationAxesOrder(Axis axisUp, out ECoordinateAxes reNewX, out ECoordinateAxes reNewY, out ECoordinateAxes reNewZ)
        {
            switch (axisUp)
            {
            case Axis.XAxisUpwards:
                reNewX = ECoordinateAxes.AxisZpositive;
                reNewY = ECoordinateAxes.AxisXpositive;
                reNewZ = ECoordinateAxes.AxisYpositive;
                break;

            case Axis.YAxisUpwards:
                reNewX = ECoordinateAxes.AxisXpositive;
                reNewY = ECoordinateAxes.AxisYpositive;
                reNewZ = ECoordinateAxes.AxisZpositive;
                break;

            case Axis.ZAxisUpwards:
                reNewX = ECoordinateAxes.AxisYpositive;
                reNewY = ECoordinateAxes.AxisZpositive;
                reNewZ = ECoordinateAxes.AxisXpositive;
                break;

            case Axis.XAxisDownwards:
                reNewX = ECoordinateAxes.AxisZnegative;
                reNewY = ECoordinateAxes.AxisXnegative;
                reNewZ = ECoordinateAxes.AxisYnegative;
                break;

            case Axis.YAxisDownwards:
                reNewX = ECoordinateAxes.AxisXnegative;
                reNewY = ECoordinateAxes.AxisYnegative;
                reNewZ = ECoordinateAxes.AxisZnegative;
                break;

            case Axis.ZAxisDownwards:
                reNewX = ECoordinateAxes.AxisYnegative;
                reNewY = ECoordinateAxes.AxisZnegative;
                reNewZ = ECoordinateAxes.AxisXnegative;
                break;

            default:
                reNewX = ECoordinateAxes.AxisXpositive;
                reNewY = ECoordinateAxes.AxisYpositive;
                reNewZ = ECoordinateAxes.AxisZpositive;
                break;
            }
        }
Exemple #2
0
        public static Quaternion GetAxesOrderRotation(ECoordinateAxes eNewX, ECoordinateAxes eNewY, ECoordinateAxes eNewZ)
        {
            Quaternion oRotation = Quaternion.identity;

            switch (eNewY)
            {
            case ECoordinateAxes.AxisXpositive:
            {
                oRotation *= QuaternionHelper.RotationZ(90 * Mathf.PI / 180);
                switch (eNewX)
                {
                case ECoordinateAxes.AxisYpositive:
                {
                    oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZpositive:
                {
                    oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZnegative:
                {
                    oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }

            case ECoordinateAxes.AxisXnegative:
            {
                oRotation *= QuaternionHelper.RotationZ(-90 * Mathf.PI / 180);
                switch (eNewX)
                {
                case ECoordinateAxes.AxisYnegative:
                {
                    oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZpositive:
                {
                    oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZnegative:
                {
                    oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }

            case ECoordinateAxes.AxisYpositive:
            {
                // Retain Y axis.
                switch (eNewX)
                {
                case ECoordinateAxes.AxisXnegative:
                {
                    oRotation *= QuaternionHelper.RotationY(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZpositive:
                {
                    oRotation *= QuaternionHelper.RotationY(90 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZnegative:
                {
                    oRotation *= QuaternionHelper.RotationY(-90 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }

            case ECoordinateAxes.AxisYnegative:
            {
                oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                switch (eNewX)
                {
                case ECoordinateAxes.AxisXnegative:
                {
                    oRotation *= QuaternionHelper.RotationY(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZpositive:
                {
                    oRotation *= QuaternionHelper.RotationY(90 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisZnegative:
                {
                    oRotation *= QuaternionHelper.RotationY(-90 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }

            case ECoordinateAxes.AxisZpositive:
            {
                oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                switch (eNewX)
                {
                case ECoordinateAxes.AxisXnegative:
                {
                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisYpositive:
                {
                    oRotation *= QuaternionHelper.RotationZ(-90 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisYnegative:
                {
                    oRotation *= QuaternionHelper.RotationZ(90 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }

            case ECoordinateAxes.AxisZnegative:
            {
                oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                switch (eNewX)
                {
                case ECoordinateAxes.AxisXnegative:
                {
                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisYpositive:
                {
                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                    break;
                }

                case ECoordinateAxes.AxisYnegative:
                {
                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                    break;
                }
                }
                break;
            }
            }

            //oRotation.normalize();
            return(oRotation);
        }
        public static Quaternion GetAxesOrderRotation(ECoordinateAxes eNewX, ECoordinateAxes eNewY, ECoordinateAxes eNewZ)
        {
            Quaternion oRotation = Quaternion.identity;

            switch (eNewY)
            {
                case ECoordinateAxes.AxisXpositive:
                    {
                        oRotation *= QuaternionHelper.RotationZ(90 * Mathf.PI / 180);
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisYpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
                case ECoordinateAxes.AxisXnegative:
                    {
                        oRotation *= QuaternionHelper.RotationZ(-90 * Mathf.PI / 180);
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisYnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
                case ECoordinateAxes.AxisYpositive:
                    {
                        // Retain Y axis.
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisXnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationY(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationY(90 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationY(-90 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
                case ECoordinateAxes.AxisYnegative:
                    {
                        oRotation *= QuaternionHelper.RotationX(180 * Mathf.PI / 180);
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisXnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationY(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationY(90 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisZnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationY(-90 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
                case ECoordinateAxes.AxisZpositive:
                    {
                        oRotation *= QuaternionHelper.RotationX(-90 * Mathf.PI / 180);
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisXnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisYpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(-90 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisYnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(90 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
                case ECoordinateAxes.AxisZnegative:
                    {
                        oRotation *= QuaternionHelper.RotationX(90 * Mathf.PI / 180);
                        switch (eNewX)
                        {
                            case ECoordinateAxes.AxisXnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisYpositive:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                                    break;
                                }
                            case ECoordinateAxes.AxisYnegative:
                                {
                                    oRotation *= QuaternionHelper.RotationZ(180 * Mathf.PI / 180);
                                    break;
                                }
                        }
                        break;
                    }
            }

            //oRotation.normalize();
            return oRotation;
        }
 public static void GetCalibrationAxesOrder(Axis axisUp, out ECoordinateAxes reNewX, out ECoordinateAxes reNewY, out ECoordinateAxes reNewZ)
 {
     switch (axisUp)
     {
         case Axis.XAxisUpwards:
             reNewX = ECoordinateAxes.AxisZpositive;
             reNewY = ECoordinateAxes.AxisXpositive;
             reNewZ = ECoordinateAxes.AxisYpositive;
             break;
         case Axis.YAxisUpwards:
             reNewX = ECoordinateAxes.AxisXpositive;
             reNewY = ECoordinateAxes.AxisYpositive;
             reNewZ = ECoordinateAxes.AxisZpositive;
             break;
         case Axis.ZAxisUpwards:
             reNewX = ECoordinateAxes.AxisYpositive;
             reNewY = ECoordinateAxes.AxisZpositive;
             reNewZ = ECoordinateAxes.AxisXpositive;
             break;
         case Axis.XAxisDownwards:
             reNewX = ECoordinateAxes.AxisZnegative;
             reNewY = ECoordinateAxes.AxisXnegative;
             reNewZ = ECoordinateAxes.AxisYnegative;
             break;
         case Axis.YAxisDownwards:
             reNewX = ECoordinateAxes.AxisXnegative;
             reNewY = ECoordinateAxes.AxisYnegative;
             reNewZ = ECoordinateAxes.AxisZnegative;
             break;
         case Axis.ZAxisDownwards:
             reNewX = ECoordinateAxes.AxisYnegative;
             reNewY = ECoordinateAxes.AxisZnegative;
             reNewZ = ECoordinateAxes.AxisXnegative;
             break;
         default:
             reNewX = ECoordinateAxes.AxisXpositive;
             reNewY = ECoordinateAxes.AxisYpositive;
             reNewZ = ECoordinateAxes.AxisZpositive;
             break;
     }
 }