/* * Create an axis tripod from a supplied forward- and up-axis * */ public static AxisTripod AxisTripodFromForwardUp(Vector3 forward, Vector3 up) { AxisTripod tripod = new AxisTripod(); Quaternion q = Quaternion.LookRotation(forward, up); tripod.forward = q * Vector3.forward; tripod.up = q * Vector3.up; tripod.right = q * Vector3.right; return(tripod); }
/* * Create an axis tripod from a supplied up-vector * */ public static AxisTripod AxisTripodFromUp(Vector3 up) { AxisTripod tripod = new AxisTripod(); tripod.up = up.normalized; tripod.right = Vector3.right; float dot = Vector3.Dot(tripod.up, tripod.right); if (dot == 1f) { tripod.right = Vector3.forward; } else if (dot == -1f) { tripod.right = Vector3.back; } tripod.forward = Vector3.Cross(tripod.right, tripod.up).normalized; tripod.right = Vector3.Cross(tripod.up, tripod.forward); return(tripod); }
/* * Create an axis tripod from a supplied forward- and up-axis * */ public static AxisTripod AxisTripodFromForwardUp(Vector3 forward, Vector3 up) { AxisTripod tripod = new AxisTripod(); Quaternion q = Quaternion.LookRotation(forward, up); tripod.forward = q*Vector3.forward; tripod.up = q*Vector3.up; tripod.right = q*Vector3.right; return tripod; }
/* * Create an axis tripod from a supplied up-vector * */ public static AxisTripod AxisTripodFromUp(Vector3 up) { AxisTripod tripod = new AxisTripod(); tripod.up = up.normalized; tripod.right = Vector3.right; float dot = Vector3.Dot(tripod.up, tripod.right); if (dot==1f) tripod.right = Vector3.forward; else if (dot==-1f) tripod.right = Vector3.back; tripod.forward = Vector3.Cross(tripod.right, tripod.up).normalized; tripod.right = Vector3.Cross(tripod.up, tripod.forward); return tripod; }