Esempio n. 1
0
        /// <summary>
        /// Засунет объект в фрейм, переведя в координаты физики, повернув объект на нужные углы.
        /// </summary>
        public static void PutInFrame(Entity entity, Frame3D frame, Quaternion inititalOrientation)
        {
            entity.Position = ToSimUnits(Frame3DToVector3(frame.NewX(-frame.X)));

            entity.Orientation = Quaternion.CreateFromYawPitchRoll(
                //(float)frame.Pitch.Radian, (float)frame.Roll.Radian, -(float)frame.Yaw.Radian);
                (float)frame.Roll.Radian, (float)frame.Pitch.Radian, -(float)frame.Yaw.Radian) * inititalOrientation;
        }
Esempio n. 2
0
        /// <summary>
        /// Запишет координаты объекта в frame, переведя их в координаты экрана.
        /// </summary>
        public static Frame3D GetFrame(Entity entity, Quaternion inititalOrientation)
        {
            inititalOrientation = new Quaternion(inititalOrientation.X, inititalOrientation.Y, inititalOrientation.Z, -inititalOrientation.W);

            Frame3D f = Vector3ToFrame3D(ToDisplayUnits(entity.Position));

            f = f.NewX(-f.X);

            BEPUphysics.MathExtensions.Matrix m;
            Quaternion q = entity.Orientation;

            BEPUphysics.MathExtensions.Matrix.CreateFromQuaternion(ref q, out m);

            f = SetAngles(f, m);
            Quaternion orient = entity.Orientation * inititalOrientation;

            f.Orientation = new Quat(orient.X, orient.Y, orient.Z, orient.W);
            return(f);
        }