📄 vec.h
字号:
_SETcol3((to)[1], from, 1), \ _SETcol3((to)[2], from, 2))#define VPV3(to,v,w) \ ((to)[0] = (v)[0] + (w)[0], \ (to)[1] = (v)[1] + (w)[1], \ (to)[2] = (v)[2] + (w)[2])#define VMV3(to,v,w) \ ((to)[0] = (v)[0] - (w)[0], \ (to)[1] = (v)[1] - (w)[1], \ (to)[2] = (v)[2] - (w)[2])#define MPM3(to,m1,m2) \ (VPV3((to)[0], (m1)[0], (m2)[0]), \ VPV3((to)[1], (m1)[1], (m2)[1]), \ VPV3((to)[2], (m1)[2], (m2)[2]))#define MMM3(to,m1,m2) \ (VMV3((to)[0], (m1)[0], (m2)[0]), \ VMV3((to)[1], (m1)[1], (m2)[1]), \ VMV3((to)[2], (m1)[2], (m2)[2]))#define SXV3(to,s,from) \ ((to)[0] = (s) * (from)[0], \ (to)[1] = (s) * (from)[1], \ (to)[2] = (s) * (from)[2])#define SXM3(to,s,from) \ (SXV3((to)[0], s, (from)[0]), \ SXV3((to)[1], s, (from)[1]), \ SXV3((to)[2], s, (from)[2]))#define MV3(to,from) \ ((to)[0] = -(from)[0], \ (to)[1] = -(from)[1], \ (to)[2] = -(from)[2])#define MM3(to,from) \ (MV3((to)[0], (from)[0]), \ MV3((to)[1], (from)[1]), \ MV3((to)[2], (from)[2]))#define VXS3(to,from,s) \ ((to)[0] = (from)[0] * (s), \ (to)[1] = (from)[1] * (s), \ (to)[2] = (from)[2] * (s))#define VDS3(to,from,s) \ ((to)[0] = (from)[0] / (s), \ (to)[1] = (from)[1] / (s), \ (to)[2] = (from)[2] / (s))#define MXS3(to,from,s) \ (VXS3((to)[0], (from)[0], s), \ VXS3((to)[1], (from)[1], s), \ VXS3((to)[2], (from)[2], s))#define MDS3(to,from,s) \ (VDS3((to)[0], (from)[0], s), \ VDS3((to)[1], (from)[1], s), \ VDS3((to)[2], (from)[2], s))#define MXM3(to,m1,m2) \ (VXM3((to)[0], (m1)[0], m2), \ VXM3((to)[1], (m1)[1], m2), \ VXM3((to)[2], (m1)[2], m2))#define VXM3(to,v,m) \ ((to)[0] = _DOTcol3(v, m, 0), \ (to)[1] = _DOTcol3(v, m, 1), \ (to)[2] = _DOTcol3(v, m, 2))#define MXV3(to,m,v) \ ((to)[0] = DOT3((m)[0], v), \ (to)[1] = DOT3((m)[1], v), \ (to)[2] = DOT3((m)[2], v))#define LERP3(to,v0,v1,t) \ ((to)[0]=(v0)[0]+(t)*((v1)[0]-(v0)[0]), \ (to)[1]=(v0)[1]+(t)*((v1)[1]-(v0)[1]), \ (to)[2]=(v0)[2]+(t)*((v1)[2]-(v0)[2]))#define TRACE3(m) \ ((m)[0][0] + \ (m)[1][1] + \ (m)[2][2])#define DOT3(v,w) \ ((v)[0] * (w)[0] + \ (v)[1] * (w)[1] + \ (v)[2] * (w)[2])#define NORMSQRD3(v) \ ((v)[0] * (v)[0] + \ (v)[1] * (v)[1] + \ (v)[2] * (v)[2])#define DISTSQRD3(v,w) \ (((v)[0]-(w)[0])*((v)[0]-(w)[0]) + \ ((v)[1]-(w)[1])*((v)[1]-(w)[1]) + \ ((v)[2]-(w)[2])*((v)[2]-(w)[2]))#define _DOTcol3(v,m,j) \ ((v)[0] * (m)[0][j] + \ (v)[1] * (m)[1][j] + \ (v)[2] * (m)[2][j])#define _SETcol3(v,m,j) \ ((v)[0] = (m)[0][j], \ (v)[1] = (m)[1][j], \ (v)[2] = (m)[2][j])#define _MXVcol3(to,m,M,j) \ ((to)[0][j] = _DOTcol3((m)[0],M,j), \ (to)[1][j] = _DOTcol3((m)[1],M,j), \ (to)[2][j] = _DOTcol3((m)[2],M,j))#define _DET3(v0,v1,v2,i0,i1,i2) \ ((v0)[i0]* _DET2(v1,v2,i1,i2) + \ (v0)[i1]*-_DET2(v1,v2,i0,i2) + \ (v0)[i2]* _DET2(v1,v2,i0,i1))#define VXV3(to,v1,v2) \ ((to)[0] = _DET2(v1,v2, 1,2), \ (to)[1] = -_DET2(v1,v2, 0,2), \ (to)[2] = _DET2(v1,v2, 0,1))#define SET3from2(to,from,pad) \ ((to)[0] = (from)[0], \ (to)[1] = (from)[1], \ (to)[2] = (pad))#define SETMAT3from2(to,from,pad0,pad1) \ (SET3from2((to)[0], (from)[0], pad0), \ SET3from2((to)[1], (from)[1], pad0), \ FILLVEC2((to)[2], (pad0)), (to)[2][2] = (pad1))#define M2XM3(to3,m2,m3) \ (_MXVcol2(to3,m2,m3,0), (to3)[2][0]=(m3)[2][0], \ _MXVcol2(to3,m2,m3,1), (to3)[2][1]=(m3)[2][1], \ _MXVcol2(to3,m2,m3,2), (to3)[2][2]=(m3)[2][2])#define M3XM2(to3,m3,m2) \ (VXM2((to3)[0],(m3)[0],m2), (to3)[0][2]=(m3)[0][2], \ VXM2((to3)[1],(m3)[1],m2), (to3)[1][2]=(m3)[1][2], \ VXM2((to3)[2],(m3)[2],m2), (to3)[2][2]=(m3)[2][2])#define V3XM4(to3,v3,m4) \ ((to3)[0] = _DOTcol3(v3,m4,0) + (m4)[3][0], \ (to3)[1] = _DOTcol3(v3,m4,1) + (m4)[3][1], \ (to3)[2] = _DOTcol3(v3,m4,2) + (m4)[3][2])#define M4XV3(to3,m4,v3) \ ((to3)[0] = DOT3((m4)[0],v3) + (m4)[0][3], \ (to3)[1] = DOT3((m4)[1],v3) + (m4)[1][3], \ (to3)[2] = DOT3((m4)[2],v3) + (m4)[2][3])#define VXVXV3(v0,v1,v2) \ (_DET3(v0,v1,v2,0,1,2))#define DET3(m) \ (VXVXV3((m)[0],(m)[1],(m)[2]))#define ADJOINT3(to,m) \ ( _ADJOINTcol3(to,0,m,1,2), \ __ADJOINTcol3(to,1,m,0,2), \ _ADJOINTcol3(to,2,m,0,1))#define _ADJOINTcol3(to,col,m,i1,i2) \ ((to)[0][col] = _DET2(m[i1],m[i2], 1,2), \ (to)[1][col] = -_DET2(m[i1],m[i2], 0,2), \ (to)[2][col] = _DET2(m[i1],m[i2], 0,1))#define __ADJOINTcol3(to,col,m,i1,i2) \ ((to)[0][col] = -_DET2(m[i1],m[i2], 1,2), \ (to)[1][col] = _DET2(m[i1],m[i2], 0,2), \ (to)[2][col] = -_DET2(m[i1],m[i2], 0,1))#define SET4(to,from) \ ((to)[0] = (from)[0], \ (to)[1] = (from)[1], \ (to)[2] = (from)[2], \ (to)[3] = (from)[3])#define SETMAT4(to,from) \ (SET4((to)[0], (from)[0]), \ SET4((to)[1], (from)[1]), \ SET4((to)[2], (from)[2]), \ SET4((to)[3], (from)[3]))#define ROUNDVEC4(to,from) \ ((to)[0] = floor((from)[0]+.5), \ (to)[1] = floor((from)[1]+.5), \ (to)[2] = floor((from)[2]+.5), \ (to)[3] = floor((from)[3]+.5))#define ROUNDMAT4(to,from) \ (ROUNDVEC4((to)[0], (from)[0]), \ ROUNDVEC4((to)[1], (from)[1]), \ ROUNDVEC4((to)[2], (from)[2]), \ ROUNDVEC4((to)[3], (from)[3]))#define FILLVEC4(v,s) \ ((v)[0] = (s), \ (v)[1] = (s), \ (v)[2] = (s), \ (v)[3] = (s))#define FILLMAT4(m,s) \ (FILLVEC4((m)[0], s), \ FILLVEC4((m)[1], s), \ FILLVEC4((m)[2], s), \ FILLVEC4((m)[3], s))#define ZEROVEC4(v) \ ((v)[0] = 0, \ (v)[1] = 0, \ (v)[2] = 0, \ (v)[3] = 0)#define ISZEROVEC4(v) \ ((v)[0] == 0 && \ (v)[1] == 0 && \ (v)[2] == 0 && \ (v)[3] == 0)#define EQVEC4(v,w) \ ((v)[0] == (w)[0] && \ (v)[1] == (w)[1] && \ (v)[2] == (w)[2] && \ (v)[3] == (w)[3])#define EQMAT4(m1,m2) \ (EQVEC4((m1)[0], (m2)[0]) && \ EQVEC4((m1)[1], (m2)[1]) && \ EQVEC4((m1)[2], (m2)[2]) && \ EQVEC4((m1)[3], (m2)[3]))#define ZEROMAT4(m) \ (ZEROVEC4((m)[0]), \ ZEROVEC4((m)[1]), \ ZEROVEC4((m)[2]), \ ZEROVEC4((m)[3]))#define IDENTMAT4(m) \ (ZEROVEC4((m)[0]), (m)[0][0]=1, \ ZEROVEC4((m)[1]), (m)[1][1]=1, \ ZEROVEC4((m)[2]), (m)[2][2]=1, \ ZEROVEC4((m)[3]), (m)[3][3]=1)#define TRANSPOSE4(to,from) \ (_SETcol4((to)[0], from, 0), \ _SETcol4((to)[1], from, 1), \ _SETcol4((to)[2], from, 2), \ _SETcol4((to)[3], from, 3))#define VPV4(to,v,w) \ ((to)[0] = (v)[0] + (w)[0], \ (to)[1] = (v)[1] + (w)[1], \ (to)[2] = (v)[2] + (w)[2], \ (to)[3] = (v)[3] + (w)[3])#define VMV4(to,v,w) \ ((to)[0] = (v)[0] - (w)[0], \ (to)[1] = (v)[1] - (w)[1], \ (to)[2] = (v)[2] - (w)[2], \ (to)[3] = (v)[3] - (w)[3])#define MPM4(to,m1,m2) \ (VPV4((to)[0], (m1)[0], (m2)[0]), \ VPV4((to)[1], (m1)[1], (m2)[1]), \ VPV4((to)[2], (m1)[2], (m2)[2]), \ VPV4((to)[3], (m1)[3], (m2)[3]))#define MMM4(to,m1,m2) \ (VMV4((to)[0], (m1)[0], (m2)[0]), \ VMV4((to)[1], (m1)[1], (m2)[1]), \ VMV4((to)[2], (m1)[2], (m2)[2]), \ VMV4((to)[3], (m1)[3], (m2)[3]))#define SXV4(to,s,from) \ ((to)[0] = (s) * (from)[0], \ (to)[1] = (s) * (from)[1], \ (to)[2] = (s) * (from)[2], \ (to)[3] = (s) * (from)[3])#define SXM4(to,s,from) \ (SXV4((to)[0], s, (from)[0]), \ SXV4((to)[1], s, (from)[1]), \ SXV4((to)[2], s, (from)[2]), \ SXV4((to)[3], s, (from)[3]))#define MV4(to,from) \ ((to)[0] = -(from)[0], \ (to)[1] = -(from)[1], \ (to)[2] = -(from)[2], \ (to)[3] = -(from)[3])#define MM4(to,from) \ (MV4((to)[0], (from)[0]), \ MV4((to)[1], (from)[1]), \ MV4((to)[2], (from)[2]), \ MV4((to)[3], (from)[3]))#define VXS4(to,from,s) \ ((to)[0] = (from)[0] * (s), \ (to)[1] = (from)[1] * (s), \ (to)[2] = (from)[2] * (s), \ (to)[3] = (from)[3] * (s))#define VDS4(to,from,s) \ ((to)[0] = (from)[0] / (s), \ (to)[1] = (from)[1] / (s), \ (to)[2] = (from)[2] / (s), \ (to)[3] = (from)[3] / (s))#define MXS4(to,from,s) \ (VXS4((to)[0], (from)[0], s), \ VXS4((to)[1], (from)[1], s), \ VXS4((to)[2], (from)[2], s), \ VXS4((to)[3], (from)[3], s))#define MDS4(to,from,s) \ (VDS4((to)[0], (from)[0], s), \ VDS4((to)[1], (from)[1], s), \ VDS4((to)[2], (from)[2], s), \ VDS4((to)[3], (from)[3], s))#define MXM4(to,m1,m2) \ (VXM4((to)[0], (m1)[0], m2), \ VXM4((to)[1], (m1)[1], m2), \ VXM4((to)[2], (m1)[2], m2), \ VXM4((to)[3], (m1)[3], m2))#define VXM4(to,v,m) \ ((to)[0] = _DOTcol4(v, m, 0), \ (to)[1] = _DOTcol4(v, m, 1), \ (to)[2] = _DOTcol4(v, m, 2), \ (to)[3] = _DOTcol4(v, m, 3))#define MXV4(to,m,v) \ ((to)[0] = DOT4((m)[0], v), \ (to)[1] = DOT4((m)[1], v), \ (to)[2] = DOT4((m)[2], v), \ (to)[3] = DOT4((m)[3], v))#define LERP4(to,v0,v1,t) \ ((to)[0]=(v0)[0]+(t)*((v1)[0]-(v0)[0]), \ (to)[1]=(v0)[1]+(t)*((v1)[1]-(v0)[1]), \ (to)[2]=(v0)[2]+(t)*((v1)[2]-(v0)[2]), \ (to)[3]=(v0)[3]+(t)*((v1)[3]-(v0)[3]))#define TRACE4(m) \ ((m)[0][0] + \ (m)[1][1] + \ (m)[2][2] + \ (m)[3][3])#define DOT4(v,w) \ ((v)[0] * (w)[0] + \ (v)[1] * (w)[1] + \ (v)[2] * (w)[2] + \ (v)[3] * (w)[3])#define NORMSQRD4(v) \ ((v)[0] * (v)[0] + \ (v)[1] * (v)[1] + \ (v)[2] * (v)[2] + \ (v)[3] * (v)[3])#define DISTSQRD4(v,w) \ (((v)[0]-(w)[0])*((v)[0]-(w)[0]) + \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -