public static Matrix4F GetArbitraryCoordSystem(Vector3F zaxis) { Vector3F xaxis; if ((double)System.Math.Abs(zaxis.X) > (double)System.Math.Abs(zaxis.Y)) { float num = 1f / (float)System.Math.Sqrt((double)zaxis.X * (double)zaxis.X + (double)zaxis.Z * (double)zaxis.Z); xaxis = new Vector3F(-zaxis.Z * num, 0.0f, zaxis.X * num); } else { float num = 1f / (float)System.Math.Sqrt((double)zaxis.Y * (double)zaxis.Y + (double)zaxis.Z * (double)zaxis.Z); xaxis = new Vector3F(0.0f, zaxis.Z * num, -zaxis.Y * num); } return(Transformation4F.smethod_0(xaxis, zaxis)); }
public static Matrix4F Scaling(Vector3F v, Point3F origin) { Vector3F v1 = (Vector3F)origin; return(Transformation4F.Translation(v1) * Transformation4F.Scaling(v) * Transformation4F.Translation(-v1)); }
public static Matrix4F Scaling(float s, Point3F origin) { Vector3F v = (Vector3F)origin; return(Transformation4F.Translation(v) * Transformation4F.Scaling(s) * Transformation4F.Translation(-v)); }
private static Matrix4F smethod_0(Vector3F xaxis, Vector3F zaxis) { Vector3F yaxis = Vector3F.CrossProduct(zaxis, xaxis); return(Transformation4F.GetCoordSystem(xaxis, yaxis, zaxis)); }