public static double DistanceToKerbin(LaserSailModule sail, Orbit orbit, Vector3d normal, double UT) { Vector3d homePosition = FlightGlobals.Bodies[1].getPositionAtUT(UT); Vector3d ownPosition = orbit.getPositionAtUT(UT); Vector3d relativePosition = ownPosition - homePosition; double output = relativePosition.magnitude - 600000; return(output); }
public static Vector3d CalculateLaserForce(LaserSailModule sail, Orbit orbit, Vector3d normal, double UT) { Vector3d homePosition = FlightGlobals.Bodies[1].getPositionAtUT(UT); Vector3d ownPosition = orbit.getPositionAtUT(UT); Vector3d relativePosition = ownPosition - homePosition; //if (Vector3d.Dot(normal, ownsunPosition) < 0) //{ // normal = -normal; //} double angleDeviation = Vector3.Dot(relativePosition.normalized, normal); Vector3d force = normal * (angleDeviation * sail.laserForce * Math.Pow(70000 / (relativePosition.magnitude - 600000), 2)); return(force); }