public void Integration1() { RotationalFrame frame = new RotationalFrame(); Quaternion initOrient = new Quaternion(); frame.SetOrientation(initOrient); Vector3 initV = new Vector3(0, 0, 0); frame.SetAngularVelocity(initV); Vector3 torque = new Vector3(0, 0, 0); frame.SetInitialTorque(torque); // Integrate for 10 seconds for (int i = 0; i < 1000; i++) { frame.IntegrateStep1(0.01f); torque.Set(0, 1, 0); torque = torque - frame.GetAngularVelocity() * 10.0f; frame.ApplyTorque(torque); frame.IntegrateStep2(0.01f); } Assert.AreEqual(frame.GetAngularVelocity()[1], 0.1f, 0.0001f); }
public void Integration2() { RotationalFrame frame = new RotationalFrame(); Quaternion initOrient = new Quaternion(); frame.SetOrientation(initOrient); Vector3 initV = new Vector3(0, 0, 0); frame.SetAngularVelocity(initV); Vector3 torque = new Vector3(0, 1, 0); frame.SetInitialTorque(torque); Matrix3x3 inertia = new Matrix3x3(); inertia.Scale(0.1f); frame.SetInertia(inertia); // Integrate for 10 seconds for (int i = 0; i < 1000; i++) { frame.IntegrateStep1(0.01f); frame.ApplyTorque(torque); frame.IntegrateStep2(0.01f); } Assert.AreEqual(frame.GetAngularVelocity()[1], 100.0f, 0.002f); // TODO: 0.0001f }
public float GetRPM() { return(crankshaft.GetAngularVelocity()[0] * 30 / (float)Math.PI); }
public float GetRPM() { return(rotFr.GetAngularVelocity()[0] * 30.0f / (float)Math.PI); }