public void Set(Coordinate offsets) { Distance = offsets.VectorMagnitude(); if (Distance == 0) { X = Y = Z = 0; } else { X = offsets.X / Distance; Y = offsets.Y / Distance; Z = offsets.Z / Distance; } }
public static Quaternion AxisAngle(Coordinate axis, decimal angle) { return(axis.VectorMagnitude() == 0 ? Identity : new Quaternion(axis.Normalise() * DMath.Sin(angle / 2), DMath.Cos(angle / 2)).Normalise()); }