public static uint hash(double3x4 v) { return(csum(fold_to_uint(v.c0) * uint3(0xE7579997u, 0xEF7D56C7u, 0x66F38F0Bu) + fold_to_uint(v.c1) * uint3(0x624256A3u, 0x5292ADE1u, 0xD2E590E5u) + fold_to_uint(v.c2) * uint3(0xF25BE857u, 0x9BC17CE7u, 0xC8B86851u) + fold_to_uint(v.c3) * uint3(0x64095221u, 0xADF428FFu, 0xA3977109u)) + 0x745ED837u); }
public static uint3 hashwide(double3x4 v) { return((fold_to_uint(v.c0) * uint3(0x9CDC88F5u, 0xFA62D721u, 0x7E4DB1CFu) + fold_to_uint(v.c1) * uint3(0x68EEE0F5u, 0xBC3B0A59u, 0x816EFB5Du) + fold_to_uint(v.c2) * uint3(0xA24E82B7u, 0x45A22087u, 0xFC104C3Bu) + fold_to_uint(v.c3) * uint3(0x5FFF6B19u, 0x5E6CBF3Bu, 0xB546F2A5u)) + 0xBBCF63E7u); }
public int3x4(double3x4 v) { this.c0 = (int3)v.c0; this.c1 = (int3)v.c1; this.c2 = (int3)v.c2; this.c3 = (int3)v.c3; }
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 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 static uint hash(double3x4 v) { return(csum(fold_to_uint(v.c0) * uint3(0xA88D187Du, 0xCF6EBA1Du, 0x9D88E5A1u) + fold_to_uint(v.c1) * uint3(0xEADF0775u, 0x747A9D7Bu, 0x4111F799u) + fold_to_uint(v.c2) * uint3(0xB5F05AF1u, 0xFD80290Bu, 0x8B65ADB7u) + fold_to_uint(v.c3) * uint3(0xDFF4F563u, 0x7069770Du, 0xD1224537u)) + 0xE99ED6F3u); }
public static uint3 hashwide(double3x4 v) { return((fold_to_uint(v.c0) * uint3(0xA10D9E27u, 0x568DAAA9u, 0x7530254Fu) + fold_to_uint(v.c1) * uint3(0x9F090439u, 0x5E9F85C9u, 0x8C4CA03Fu) + fold_to_uint(v.c2) * uint3(0xB8D969EDu, 0xAC5DB57Bu, 0xA91A02EDu) + fold_to_uint(v.c3) * uint3(0xB3C49313u, 0xF43A9ABBu, 0x84E7E01Bu)) + 0x8E055BE5u); }
public static uint hash(double3x4 v) { return(csum(fold_to_uint(v.c0) * uint3(0x713BD06Fu, 0x753AD6ADu, 0xD19764C7u) + fold_to_uint(v.c1) * uint3(0xB5D0BF63u, 0xF9102C5Fu, 0x9881FB9Fu) + fold_to_uint(v.c2) * uint3(0x56A1530Du, 0x804B722Du, 0x738E50E5u) + fold_to_uint(v.c3) * uint3(0x4FC93C25u, 0xCD0445A5u, 0xD2B90D9Bu)) + 0xD35C9B2Du); }
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 int3x4 int3x4(double3x4 v) { return(new int3x4(v)); }
public static float3x4 float3x4(double3x4 v) { return(new float3x4(v)); }
public static uint3x4 uint3x4(double3x4 v) { return(new uint3x4(v)); }