void FixedPointCSTest_Move() { F64Vec3 TTT = F64Vec3.RotateY(new F64Vec3(0, 0, 1), new F64(-90)); Debug.LogError("TTT " + TTT.ToUnityVector3()); float speed = 10; float turnSpeed = 90; int deltaTimeMS = 1000; Vector3 oldPos = new Vector3(0, 0, 0); Vector3 dir = new Vector3(0, 0, 1); float delta = speed * deltaTimeMS / 1000; Vector3 newPos = oldPos + delta * dir; //moveObject.SetPos(moveObject.GetPos() + (float)delta * moveObject.GetDir()); Debug.LogError("UNITY NEWPOS " + newPos); float angle = turnSpeed * deltaTimeMS / 1000; Vector3 newDir = Quaternion.AngleAxis(angle, Vector3.up) * dir; newDir.Normalize(); Debug.LogError("UNITY NEWDIR " + newDir); F64 fspeed = new F64(speed); F64 fdeltaTime = new F64(deltaTimeMS); F64 f1000 = F64.F1000; F64 fdelta = fspeed * fdeltaTime / f1000; F64Vec3 fOldPos = F64Vec3.FromUnityVector3(oldPos); F64Vec3 fDir = F64Vec3.FromUnityVector3(dir); F64Vec3 fNewPos = fOldPos + fdelta * fDir; Debug.LogError("FIXED NEW POS " + fNewPos.ToUnityVector3()); F64 fTurnSpeed = new F64(turnSpeed); F64 fAngle = fTurnSpeed * fdeltaTime / f1000; F64Quat rot = F64Quat.FromAxisAngle(F64Vec3.Up, new F64(0)); F64Quat rotNor = F64Quat.Normalize(rot); F64Vec3 newFdir = F64Quat.RotateVector(rotNor, new F64Vec3(0, 0, 1)); F64Vec3 newNfdir = F64Vec3.Normalize(newFdir); Debug.LogError("FIXED NEWDIR " + newNfdir.ToUnityVector3()); }
public static Quaternion ToQuaternion(this F64Quat v) { return(new Quaternion(v.X.Float, v.Y.Float, v.Z.Float, v.W.Float)); }