44 lines
1.5 KiB
Cython
44 lines
1.5 KiB
Cython
cdef class Matrix:
|
|
|
|
cdef float m[0]
|
|
|
|
cdef public float xdx
|
|
cdef public float xdy
|
|
cdef public float xdz
|
|
cdef public float xdw
|
|
|
|
cdef public float ydx
|
|
cdef public float ydy
|
|
cdef public float ydz
|
|
cdef public float ydw
|
|
|
|
cdef public float zdx
|
|
cdef public float zdy
|
|
cdef public float zdz
|
|
cdef public float zdw
|
|
|
|
cdef public float wdx
|
|
cdef public float wdy
|
|
cdef public float wdz
|
|
cdef public float wdw
|
|
|
|
|
|
cdef inline void transform4(Matrix self, float *ox, float *oy, float *oz, float *ow, float x, float y, float z, float w):
|
|
ox[0] = x * self.xdx + y * self.xdy + z * self.xdz + w * self.xdw
|
|
oy[0] = x * self.ydx + y * self.ydy + z * self.ydz + w * self.ydw
|
|
oz[0] = x * self.zdx + y * self.zdy + z * self.zdz + w * self.zdw
|
|
ow[0] = x * self.wdx + y * self.wdy + z * self.wdz + w * self.wdw
|
|
|
|
cdef inline void transform3(Matrix self, float *ox, float *oy, float *oz, float x, float y, float z, float w):
|
|
ox[0] = x * self.xdx + y * self.xdy + z * self.xdz + w * self.xdw
|
|
oy[0] = x * self.ydx + y * self.ydy + z * self.ydz + w * self.ydw
|
|
oz[0] = x * self.zdx + y * self.zdy + z * self.zdz + w * self.zdw
|
|
|
|
cdef inline void transform2(Matrix self, float *ox, float *oy, float x, float y, float z, float w):
|
|
ox[0] = x * self.xdx + y * self.xdy + z * self.xdz + w * self.xdw
|
|
oy[0] = x * self.ydx + y * self.ydy + z * self.ydz + w * self.ydw
|
|
|
|
cpdef bint is_unit_aligned(Matrix self)
|
|
|
|
cdef class Matrix2D(Matrix):
|
|
pass
|