📄 real.h
字号:
/* ------------------------------------------------------------------------- *\ REAL.H : Definition of a real number type (and related types) by Christophe Schlick (1 June 1992)\* ------------------------------------------------------------------------- */#ifndef _REAL_#define _REAL_#include "tool.h"/*** By default, real numbers are defined in double precision (ie double)** To get single precision, simply add "#define SINGLE_REAL" in your program*//*** Scalar type definition (single or double precision)*/#ifdef SINGLE_REALtypedef float real;#define REAL1FILE "%g\n"#define REAL2FILE "%g %g\n"#define REAL3FILE "%g %g %g\n"#define REAL4FILE "%g %g %g %g\n"#elsetypedef double real;#define REAL1FILE "%lg\n"#define REAL2FILE "%lg %lg\n"#define REAL3FILE "%lg %lg %lg\n"#define REAL4FILE "%lg %lg %lg %lg\n"#endif/*** Vector type definition*/typedef struct { real x,y;} realvec2; /* 2D vector of reals */typedef struct { real x,y,z;} realvec3; /* 3D vector of reals */typedef struct { real x,y,z,w;} realvec4; /* 4D vector of reals *//*** Matrix type definition*/typedef realvec2 realmat2[2]; /* 2D matrix of reals */typedef realvec3 realmat3[3]; /* 3D matrix of reals */typedef realvec4 realmat4[4]; /* 4D matrix of reals *//*** Frame type definition*/typedef realvec2 frame2[5]; /* 2D cartesian frame */typedef realvec3 frame3[7]; /* 3D cartesian frame */typedef realvec4 frame4[9]; /* 4D cartesian frame *//*** Aliases for lazy programmers*/typedef realvec2 rv2;typedef realvec3 rv3;typedef realvec4 rv4;typedef realmat2 rm2;typedef realmat3 rm3;typedef realmat4 rm4;/*** Get values from file*/#define GET_REAL(File,Var)\ (fscanf (File, REAL1FILE, &(Var)))#define GET_REALVEC2(File,Var)\ (fscanf (File, REAL2FILE, &(Var).x, &(Var).y))#define GET_REALVEC3(File,Var)\ (fscanf (File, REAL3FILE, &(Var).x, &(Var).y, &(Var).z))#define GET_REALVEC4(File,Var)\ (fscanf (File, REAL4FILE, &(Var).x, &(Var).y, &(Var).z, &(Var).w))#define GET_REALMAT2(File,Var)\ (GET_REALVEC2(File,(Var)[0]),\ GET_REALVEC2(File,(Var)[1]))#define GET_REALMAT3(File,Var)\ (GET_REALVEC3(File,(Var)[0]),\ GET_REALVEC3(File,(Var)[1]),\ GET_REALVEC3(File,(Var)[2]))#define GET_REALMAT4(File,Var)\ (GET_REALVEC4(File,(Var)[0]),\ GET_REALVEC4(File,(Var)[1]),\ GET_REALVEC4(File,(Var)[2]),\ GET_REALVEC4(File,(Var)[3]))/*** Put values in file*/#define PUT_REAL(File,Var)\ (fprintf (File, REAL1FILE, (Var)))#define PUT_REALVEC2(File,Var)\ (fprintf (File, REAL2FILE, (Var).x, (Var).y))#define PUT_REALVEC3(File,Var)\ (fprintf (File, REAL3FILE, (Var).x, (Var).y, (Var).z))#define PUT_REALVEC4(File,Var)\ (fprintf (File, REAL4FILE, (Var).x, (Var).y, (Var).z, (Var).w))#define PUT_REALMAT2(File,Var)\ (PUT_REALVEC2 (File,(Var[)0]),\ PUT_REALVEC2 (File,(Var)[1]))#define PUT_REALMAT3(File,Var)\ (PUT_REALVEC3(File,(Var)[0]),\ PUT_REALVEC3(File,(Var)[1]),\ PUT_REALVEC3(File,(Var)[2]))#define PUT_REALMAT4(File,Var)\ (PUT_REALVEC4(File,(Var)[0]),\ PUT_REALVEC4(File,(Var)[1]),\ PUT_REALVEC4(File,(Var)[2]),\ PUT_REALVEC4(File,(Var)[3]))#endif/* ------------------------------------------------------------------------- */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -