From b53713cdda3c4e49913a6a82239da35d62f74e68 Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Tue, 9 Apr 2013 17:14:15 -0700 Subject: BulletSim: some formatting changes. --- OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'OpenSim/Region/Physics') diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs index 723be0b..612c68b 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs @@ -1360,19 +1360,26 @@ namespace OpenSim.Region.Physics.BulletSPlugin { //Another formula to try got from : //http://answers.unity3d.com/questions/10425/how-to-stabilize-angular-motion-alignment-of-hover.html - Vector3 VehicleUpAxis = Vector3.UnitZ *VehicleOrientation; - //Flipping what was originally a timescale into a speed variable and then multiplying it by 2 since only computing half - //the distance between the angles. - float VerticalAttractionSpeed=(1/m_verticalAttractionTimescale)*2.0f; - //making a prediction of where the up axis will be when this is applied rather then where it is now this makes for a smoother - //adjustment and less fighting between the various forces + + Vector3 VehicleUpAxis = Vector3.UnitZ * VehicleOrientation; + + // Flipping what was originally a timescale into a speed variable and then multiplying it by 2 + // since only computing half the distance between the angles. + float VerticalAttractionSpeed = (1 / m_verticalAttractionTimescale) * 2.0f; + + // Make a prediction of where the up axis will be when this is applied rather then where it is now as + // this makes for a smoother adjustment and less fighting between the various forces. Vector3 predictedUp = VehicleUpAxis * Quaternion.CreateFromAxisAngle(VehicleRotationalVelocity, 0f); - //this is only half the distance to the target so it will take 2 seconds to complete the turn. + + // This is only half the distance to the target so it will take 2 seconds to complete the turn. Vector3 torqueVector = Vector3.Cross(predictedUp, Vector3.UnitZ); - //Scaling vector by our timescale since it is an acceleration it is r/s^2 or radians a timescale squared - Vector3 vertContributionV=torqueVector * VerticalAttractionSpeed *VerticalAttractionSpeed; + + // Scale vector by our timescale since it is an acceleration it is r/s^2 or radians a timescale squared + Vector3 vertContributionV = torqueVector * VerticalAttractionSpeed * VerticalAttractionSpeed; + VehicleRotationalVelocity += vertContributionV; - VDetailLog("{0}, MoveAngular,verticalAttraction,UpAxis={1},PredictedUp={2},torqueVector={3},contrib={4}", + + VDetailLog("{0}, MoveAngular,verticalAttraction,UpAxis={1},PredictedUp={2},torqueVector={3},contrib={4}", ControllingPrim.LocalID, VehicleUpAxis, predictedUp, -- cgit v1.1