public static Vector3 ConvertToSpace(this Node source, Node target, Vector3 position) { return target.ConvertWorldToLocalPosition(source.ConvertLocalToWorldPosition(position)); }
private static void TransformSphere(SphereNode sphere, Node destWorld, out Vector3 transformedCenter, out float transformedSquaredRadius) { transformedCenter = destWorld.ConvertWorldToLocalPosition(sphere.ReferenceNode.ConvertLocalToWorldPosition(Vector3.ZERO)); Vector3 bTransformedTop = destWorld.ConvertWorldToLocalPosition ( sphere.ReferenceNode.ConvertWorldToLocalPosition(MathHelper.Up * sphere.Radius) ); transformedSquaredRadius = bTransformedTop.SquaredDistance(transformedCenter); }
public static Ray TransformRay(this Ray ray, Node world) { Vector3 transformedOrigin = world.ConvertWorldToLocalPosition(ray.Origin); Vector3 transformedDirection = world.ConvertWorldToLocalPosition(ray.Direction + ray.Origin) - transformedOrigin; return new Ray(transformedOrigin, transformedDirection); }