Posted to tcl by hypnotoad at Wed Jun 25 17:19:29 GMT 2014view raw
- odiemath_vectorxyz_lengthInvSqr f /Users/seandeelywoods/odie/sandbox/odielib/cmodules/math/generic/vectorxyz.c 0x7fa993447d20 153 0 65 101 136 {
- comment {/*
- * A - the vector to be tranformed
- * B - the affine tranformation matrix
- * R - a place to dump the result
- *
- * A and R MUST BE DIFFERENT
- */}
- definition {CTHULHU_INLINE double odiemath_vectorxyz_lengthInvSqr(VECTOR A);
- }
- body {{
- double r=A[0]+A[1]+A[2];
- if(abs(r)<__FLT_EPSILON__) {
- return NAN;
- }
- return (1.0/(A[0]*A[0]+A[1]*A[1]+A[2]*A[2]));
- }}
- }
- vectorxyz_method_length_inv_sqr fl /Users/seandeelywoods/odie/sandbox/odielib/cmodules/math/generic/vectorxyz.c 0x7fa993447d20 153 0 106 101 331 {
- comment {/*
- * A - the vector to be tranformed
- * B - the affine tranformation matrix
- * R - a place to dump the result
- *
- * A and R MUST BE DIFFERENT
- */}
- definition {static int vectorxyz_method_length_inv_sqr(void *pArg,Tcl_Interp *interp,int objc,Tcl_Obj *CONST objv[]);
- }
- body {{
- MATOBJ *A;
- double result;
- if(objc != 2) {
- Tcl_WrongNumArgs( interp, 1, objv, "A" );
- }
- A=Odie_GetMatrixFromTclObj(interp,objv[1],MATFORM_vectorxyz);
- if(!A) return TCL_ERROR;
- result=odiemath_vectorxyz_lengthInvSqr(A->matrix);
- Tcl_SetObjResult(interp,Tcl_NewDoubleObj(result));
- return TCL_OK;
- }}
- }
- odiemath_vectorxyz_normalize f /Users/seandeelywoods/odie/sandbox/odielib/cmodules/math/generic/vectorxyz.c 0x7fa993447d20 153 0 63 101 214 {
- comment {/*
- * A - the vector to be tranformed
- * B - the affine tranformation matrix
- * R - a place to dump the result
- *
- * A and R MUST BE DIFFERENT
- */}
- definition {CTHULHU_INLINE void odiemath_vectorxyz_normalize(VectorXYZ A);
- }
- body {{
- double d;
- double r=odiemath_vectorxyz_length(A);
- if(abs(r) < __FLT_EPSILON__) {
- A[0]=0.0;
- A[1]=0.0;
- A[3]=0.0;
- } else {
- d=1.0 / r;
- A[0]*=d;
- A[1]*=d;
- A[2]*=d;
- }
- }}
- }