diff options
Diffstat (limited to 'utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py')
-rw-r--r-- | utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py | 304 |
1 files changed, 152 insertions, 152 deletions
diff --git a/utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py b/utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py index 8dc7d35c..e927c936 100644 --- a/utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py +++ b/utils/hacks/TreeGraphs/Graphics/Geometry/mat4.py @@ -1,153 +1,153 @@ -import vec4,mat3 - -def identity(): - return ((1.0, 0.0, 0.0, 0.0), - (0.0, 1.0, 0.0, 0.0), - (0.0, 0.0, 1.0, 0.0), - (0.0, 0.0, 0.0, 1.0)) - -def fromtrans(trans): - return ((1.0, 0.0, 0.0, 0.0), - (0.0, 1.0, 0.0, 0.0), - (0.0, 0.0, 1.0, 0.0), - (trans[0], trans[1], trans[2], 1.0)) - -def fromscale(scale): - x,y,z= scale - x,y,z= float(x),float(y),float(z) - return (( x, 0.0, 0.0, 0.0), - (0.0, y, 0.0, 0.0), - (0.0, 0.0, z, 0.0), - (0.0, 0.0, 0.0, 1.0)) -def fromscaleN(n): - return fromscale((n,n,n)) - -def fromortho(left,right,bottom,top,znear,zfar): - m0= ( 2.0/(right-left), 0.0, 0.0, 0.0) - m1= (0.0, 2.0/(top-bottom), 0.0, 0.0) - m2= (0.0, 0.0, -2.0/(zfar-znear), 0.0) - m3= ( -((right+left)/(right-left)), - -((top+bottom)/(top-bottom)), - -((zfar+znear)/(zfar-znear)), - 1.0) - return (m0,m1,m2,m3) - -def mulN(m,N): - return tuple([vec4.mulN(v,N) for v in m]) - -def mul(a,b): - b_trans= zip(* b) - return tuple([transmulvec4(b_trans, a_r) for a_r in a]) - - # multiple vector v by a transposed matrix -def transmulvec4(m_trans,v): - return tuple([vec4.dot(v, m_c) for m_c in m_trans]) - -def mulvec4(m,v): - return transmulvec4(zip(* m), v) - -def trans(m): - ((m00,m01,m02,m03), - (m10,m11,m12,m13), - (m20,m21,m22,m23), - (m30,m31,m32,m33))= m - - return ( (m00,m10,m20,m30), - (m01,m11,m21,m31), - (m02,m12,m22,m32), - (m03,m13,m23,m33)) - -def det(m): - ((m00,m01,m02,m03), - (m10,m11,m12,m13), - (m20,m21,m22,m23), - (m30,m31,m32,m33))= m - - a= m00 * mat3.det( ((m11, m12, m13), - (m21, m22, m23), - (m31, m32, m33)) ); - b= m10 * mat3.det( ((m01, m02, m03), - (m21, m22, m23), - (m31, m32, m33)) ); - c= m20 * mat3.det( ((m01, m02, m03), - (m11, m12, m13), - (m31, m32, m33)) ); - d= m30 * mat3.det( ((m01, m02, m03), - (m11, m12, m13), - (m21, m22, m23)) ); - - return a-b+c-d; - -def adj(m): - ((m00,m01,m02,m03), - (m10,m11,m12,m13), - (m20,m21,m22,m23), - (m30,m31,m32,m33))= m - - t00= mat3.det( ((m11, m12, m13), - (m21, m22, m23), - (m31, m32, m33)) ) - t01= -mat3.det( ((m10, m12, m13), - (m20, m22, m23), - (m30, m32, m33)) ) - t02= mat3.det( ((m10, m11, m13), - (m20, m21, m23), - (m30, m31, m33)) ) - t03= -mat3.det( ((m10, m11, m12), - (m20, m21, m22), - (m30, m31, m32)) ) - - - t10= -mat3.det( ((m01, m02, m03), - (m21, m22, m23), - (m31, m32, m33)) ) - t11= mat3.det( ((m00, m02, m03), - (m20, m22, m23), - (m30, m32, m33)) ) - t12= -mat3.det( ((m00, m01, m03), - (m20, m21, m23), - (m30, m31, m33)) ) - t13= mat3.det( ((m00, m01, m02), - (m20, m21, m22), - (m30, m31, m32)) ) - - t20= mat3.det( ((m01, m02, m03), - (m11, m12, m13), - (m31, m32, m33)) ) - t21= -mat3.det( ((m00, m02, m03), - (m10, m12, m13), - (m30, m32, m33)) ) - t22= mat3.det( ((m00, m01, m03), - (m10, m11, m13), - (m30, m31, m33)) ) - t23= -mat3.det( ((m00, m01, m02), - (m10, m11, m12), - (m30, m31, m32)) ) - - t30= -mat3.det( ((m01, m02, m03), - (m11, m12, m13), - (m21, m22, m23)) ) - t31= mat3.det( ((m00, m02, m03), - (m10, m12, m13), - (m20, m22, m23)) ) - t32= -mat3.det( ((m00, m01, m03), - (m10, m11, m13), - (m20, m21, m23)) ) - t33= mat3.det( ((m00, m01, m02), - (m10, m11, m12), - (m20, m21, m22)) ) - - return ((t00,t01,t02,t03), - (t10,t11,t12,t13), - (t20,t21,t22,t23), - (t30,t31,t32,t33)) - -def inv(m): - d= det(m) - t= trans(adj(m)) - v= 1.0/d - return tuple([(a*v,b*v,c*v,d*v) for a,b,c,d in t]) - -def toGL(m): - m0,m1,m2,m3= m +import vec4,mat3 + +def identity(): + return ((1.0, 0.0, 0.0, 0.0), + (0.0, 1.0, 0.0, 0.0), + (0.0, 0.0, 1.0, 0.0), + (0.0, 0.0, 0.0, 1.0)) + +def fromtrans(trans): + return ((1.0, 0.0, 0.0, 0.0), + (0.0, 1.0, 0.0, 0.0), + (0.0, 0.0, 1.0, 0.0), + (trans[0], trans[1], trans[2], 1.0)) + +def fromscale(scale): + x,y,z= scale + x,y,z= float(x),float(y),float(z) + return (( x, 0.0, 0.0, 0.0), + (0.0, y, 0.0, 0.0), + (0.0, 0.0, z, 0.0), + (0.0, 0.0, 0.0, 1.0)) +def fromscaleN(n): + return fromscale((n,n,n)) + +def fromortho(left,right,bottom,top,znear,zfar): + m0= ( 2.0/(right-left), 0.0, 0.0, 0.0) + m1= (0.0, 2.0/(top-bottom), 0.0, 0.0) + m2= (0.0, 0.0, -2.0/(zfar-znear), 0.0) + m3= ( -((right+left)/(right-left)), + -((top+bottom)/(top-bottom)), + -((zfar+znear)/(zfar-znear)), + 1.0) + return (m0,m1,m2,m3) + +def mulN(m,N): + return tuple([vec4.mulN(v,N) for v in m]) + +def mul(a,b): + b_trans= zip(* b) + return tuple([transmulvec4(b_trans, a_r) for a_r in a]) + + # multiple vector v by a transposed matrix +def transmulvec4(m_trans,v): + return tuple([vec4.dot(v, m_c) for m_c in m_trans]) + +def mulvec4(m,v): + return transmulvec4(zip(* m), v) + +def trans(m): + ((m00,m01,m02,m03), + (m10,m11,m12,m13), + (m20,m21,m22,m23), + (m30,m31,m32,m33))= m + + return ( (m00,m10,m20,m30), + (m01,m11,m21,m31), + (m02,m12,m22,m32), + (m03,m13,m23,m33)) + +def det(m): + ((m00,m01,m02,m03), + (m10,m11,m12,m13), + (m20,m21,m22,m23), + (m30,m31,m32,m33))= m + + a= m00 * mat3.det( ((m11, m12, m13), + (m21, m22, m23), + (m31, m32, m33)) ); + b= m10 * mat3.det( ((m01, m02, m03), + (m21, m22, m23), + (m31, m32, m33)) ); + c= m20 * mat3.det( ((m01, m02, m03), + (m11, m12, m13), + (m31, m32, m33)) ); + d= m30 * mat3.det( ((m01, m02, m03), + (m11, m12, m13), + (m21, m22, m23)) ); + + return a-b+c-d; + +def adj(m): + ((m00,m01,m02,m03), + (m10,m11,m12,m13), + (m20,m21,m22,m23), + (m30,m31,m32,m33))= m + + t00= mat3.det( ((m11, m12, m13), + (m21, m22, m23), + (m31, m32, m33)) ) + t01= -mat3.det( ((m10, m12, m13), + (m20, m22, m23), + (m30, m32, m33)) ) + t02= mat3.det( ((m10, m11, m13), + (m20, m21, m23), + (m30, m31, m33)) ) + t03= -mat3.det( ((m10, m11, m12), + (m20, m21, m22), + (m30, m31, m32)) ) + + + t10= -mat3.det( ((m01, m02, m03), + (m21, m22, m23), + (m31, m32, m33)) ) + t11= mat3.det( ((m00, m02, m03), + (m20, m22, m23), + (m30, m32, m33)) ) + t12= -mat3.det( ((m00, m01, m03), + (m20, m21, m23), + (m30, m31, m33)) ) + t13= mat3.det( ((m00, m01, m02), + (m20, m21, m22), + (m30, m31, m32)) ) + + t20= mat3.det( ((m01, m02, m03), + (m11, m12, m13), + (m31, m32, m33)) ) + t21= -mat3.det( ((m00, m02, m03), + (m10, m12, m13), + (m30, m32, m33)) ) + t22= mat3.det( ((m00, m01, m03), + (m10, m11, m13), + (m30, m31, m33)) ) + t23= -mat3.det( ((m00, m01, m02), + (m10, m11, m12), + (m30, m31, m32)) ) + + t30= -mat3.det( ((m01, m02, m03), + (m11, m12, m13), + (m21, m22, m23)) ) + t31= mat3.det( ((m00, m02, m03), + (m10, m12, m13), + (m20, m22, m23)) ) + t32= -mat3.det( ((m00, m01, m03), + (m10, m11, m13), + (m20, m21, m23)) ) + t33= mat3.det( ((m00, m01, m02), + (m10, m11, m12), + (m20, m21, m22)) ) + + return ((t00,t01,t02,t03), + (t10,t11,t12,t13), + (t20,t21,t22,t23), + (t30,t31,t32,t33)) + +def inv(m): + d= det(m) + t= trans(adj(m)) + v= 1.0/d + return tuple([(a*v,b*v,c*v,d*v) for a,b,c,d in t]) + +def toGL(m): + m0,m1,m2,m3= m return m0+m1+m2+m3 \ No newline at end of file |