public uint3x4(double3x4 v) { this.c0 = (uint3)v.c0; this.c1 = (uint3)v.c1; this.c2 = (uint3)v.c2; this.c3 = (uint3)v.c3; }
public static uint3 hashwide(double3x4 v) { return((fold_to_uint(v.c0) * uint3(0xB139D651u, 0xE7579997u, 0xEF7D56C7u) + fold_to_uint(v.c1) * uint3(0x66F38F0Bu, 0x624256A3u, 0x5292ADE1u) + fold_to_uint(v.c2) * uint3(0xD2E590E5u, 0xF25BE857u, 0x9BC17CE7u) + fold_to_uint(v.c3) * uint3(0xC8B86851u, 0x64095221u, 0xADF428FFu)) + 0xA3977109u); }
public static uint hash(double3x4 v) { return(csum(fold_to_uint(v.c0) * uint3(0xEE390C97u, 0x9C8A2F05u, 0x4DDC6509u) + fold_to_uint(v.c1) * uint3(0x7CF083CBu, 0x5C4D6CEDu, 0xF9137117u) + fold_to_uint(v.c2) * uint3(0xE857DCE1u, 0xF62213C5u, 0x9CDAA959u) + fold_to_uint(v.c3) * uint3(0xAA269ABFu, 0xD54BA36Fu, 0xFD0847B9u)) + 0x8189A683u); }
public float3x4(double3x4 v) { this.c0 = (float3)v.c0; this.c1 = (float3)v.c1; this.c2 = (float3)v.c2; this.c3 = (float3)v.c3; }
public static double4x3 transpose(double3x4 v) { return(double4x3( v.c0.x, v.c0.y, v.c0.z, v.c1.x, v.c1.y, v.c1.z, v.c2.x, v.c2.y, v.c2.z, v.c3.x, v.c3.y, v.c3.z)); }
// Fast matrix inverse for rigid transforms (Orthonormal basis and translation) public static double3x4 fastinverse(double3x4 m) { double3 c0 = m.c0; double3 c1 = m.c1; double3 c2 = m.c2; double3 pos = m.c3; double3 r0 = double3(c0.x, c1.x, c2.x); double3 r1 = double3(c0.y, c1.y, c2.y); double3 r2 = double3(c0.z, c1.z, c2.z); pos = -(r0 * pos.x + r1 * pos.y + r2 * pos.z); return(double3x4(r0, r1, r2, pos)); }
public static uint3x4 uint3x4(double3x4 v) { return(new uint3x4(v)); }
public static int3x4 int3x4(double3x4 v) { return(new int3x4(v)); }
public static float3x4 float3x4(double3x4 v) { return(new float3x4(v)); }