public static Vec3 Truncate( Vec3 v ) { return new Vec3( v.X() > 0.0f ? CMath.Floor( v.X() ) : CMath.Ceil( v.X() ), v.Y() > 0.0f ? CMath.Floor( v.Y() ) : CMath.Ceil( v.Y() ), v.Z() > 0.0f ? CMath.Floor(v.Z()) : CMath.Ceil(v.Z()) ); }
public static Vec3 Max(Vec3 a, Vec3 b) { return new Vec3( Math.Max(a.X(), b.X()), Math.Max(a.Y(), b.Y()), Math.Max(a.Z(), b.Z()) ); }
public static int FloatTo565(Vec3 colour) { // get the components in the correct range int r = CMath.FloatToInt(31.0f * colour.X(), 31); int g = CMath.FloatToInt(63.0f * colour.Y(), 63); int b = CMath.FloatToInt(31.0f * colour.Z(), 31); // pack into a single value return (r << 11) | (g << 5) | b; }
public static float Dot(Vec3 a, Vec3 b) { return a.X() * b.X() + a.Y()* b.Y() + a.Z() * b.Z(); }