home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 2 / APDL_PD2A.iso / demos / demo_1 / demo3 / !Demo3 / h / GrpLib
Encoding:
Text File  |  1992-02-01  |  4.6 KB  |  144 lines

  1. /******************************************************************************
  2. *                                                                             *
  3. *    grp.h                                                                    *
  4. *                                                                             *
  5. ******************************************************************************/
  6.  
  7.  
  8. /*-----------------------------------------------------------------------------
  9.    extern Grp2D
  10. -----------------------------------------------------------------------------*/
  11.  
  12. extern void Grp2DInit(void);
  13. extern void Grp2DShutDown(void);
  14. extern void Grp2DChgParm(void);
  15. extern void Grp2DClearView(void);
  16. extern void Grp2DSwapView(void);
  17.  
  18. extern void Uni2DPoly1(void);
  19. extern void Uni2DPoly2(void);
  20. extern void Uni2DPoly3(void);
  21. extern void Uni2DPoly4(void);
  22. extern void Uni2DCircle(void);
  23.  
  24. extern void Grd2DPoly3(void);
  25.  
  26. extern void Spr2DPoly3(void);
  27.  
  28. /*-----------------------------------------------------------------------------
  29.    extern Grp3D
  30. -----------------------------------------------------------------------------*/
  31.  
  32. extern void Grp3DInit(void);
  33. extern void Grp3DShutDown(void);
  34. extern void Grp3DChgParm(void);
  35.  
  36. extern void Uni3DPoly1(void);
  37. extern void Uni3DPoly2(void);
  38. extern void Uni3DPoly3(void);
  39. extern void Uni3DPoly4(void);
  40. extern void Uni3DSphere(void);
  41.  
  42. extern void Grd3DPoly3(void);
  43.  
  44. extern void Spr3DPoly3(void);
  45. extern void Spr3DLoad(void);
  46.  
  47. extern void Convexe3D(void);
  48. extern void Convexe3DLoad(void);
  49.  
  50. extern void Schumkr3D(void);
  51. extern void Schumkr3DLoad(void);
  52.  
  53. extern void (*Obj3DJmpTbl[])();
  54.  
  55. /*-----------------------------------------------------------------------------
  56.    extern Misc
  57. -----------------------------------------------------------------------------*/
  58.  
  59. extern char TblCol[];
  60.  
  61. extern void InitRotMat(void);
  62. extern void TransPtObs(void);
  63. extern void TransNmObs(void);
  64. extern void RotObjRep(void);
  65. extern void RepToRepIn4Rep(void);
  66.  
  67. extern void CallGrp(void *GrpReg, void *GrpStack, void func(void));
  68.  
  69. /*-----------------------------------------------------------------------------
  70.   Matrix routines
  71. -----------------------------------------------------------------------------*/
  72.  
  73. typedef int mat33[3][3];
  74. typedef int vec3[3];
  75. typedef int vec4[4];
  76.  
  77. #define MkVec3(A,x,y,z)   (A)[0]=(x); (A)[1]=(y); (A)[2]=(z)
  78.  
  79. #define MkVec4(A,x,y,z,t) (A)[0]=(x); (A)[1]=(y); (A)[2]=(z); (A)[3]=(t)
  80.  
  81. #define MkRotMat(M,ra,rs,rt) GrpReg[0] = (ra) & 0x7FF; \
  82.                              GrpReg[1] = (rs) & 0x7FF; \
  83.                              GrpReg[2] = (rt) & 0x7FF; \
  84.                              GrpReg[3] = (int)(M);     \
  85.                              CallGrp(GrpReg,GrpStack,InitRotMat)
  86.  
  87. #define Vec3to4(A,B)    (B)[0]=(A)[0];(B)[1]=(A)[1];(B)[2]=(A)[2];\
  88.                         (B)[3]=0
  89.  
  90.  
  91. #define InvMat(A,B) /* A=1/B */  \
  92.              (A)[0][0]=(B)[0][0]; (A)[0][1]=(B)[1][0]; (A)[0][2]=(B)[2][0]; \
  93.              (A)[1][0]=(B)[0][1]; (A)[1][1]=(B)[1][1]; (A)[1][2]=(B)[2][1]; \
  94.              (A)[2][0]=(B)[0][2]; (A)[2][1]=(B)[1][2]; (A)[2][2]=(B)[2][2]
  95.  
  96.  
  97. /*-----------------------------------------------------------------------------
  98.   Grp Level 1 routines prototypes
  99. -----------------------------------------------------------------------------*/
  100.  
  101. extern int  GrpReg[16];
  102. extern int  *GrpStack;
  103. extern int  *GrpGbuf;
  104. extern void Change2DParm(int xorg, int yorg, int xmax, int ymax);
  105. extern void Change3DParm(int pfx, int pfy, int dist);
  106. extern void InitGrp(void);
  107. extern void SwapView(int col);
  108.  
  109. /*-----------------------------------------------------------------------------
  110.   Grp Level 2 routines prototypes
  111. -----------------------------------------------------------------------------*/
  112.  
  113. #define OBS 0
  114. #define SPR 1
  115. #define CVX 2
  116. #define SCH 3
  117.  
  118. typedef struct {
  119.                int   ra,rs,rt;
  120.                mat33 Rep;
  121.                vec3  Org;
  122.                int   Prim[6];
  123. } Object;
  124.  
  125. #define NBMAXDirecSrc 2
  126. #define NBMAXPonctSrc 2
  127. typedef struct {
  128.                int  NbDirecSrc;
  129.                int  NbPonctSrc;
  130.                int  AmbLight;
  131.                vec4 DirecSrc[NBMAXDirecSrc]; 
  132.                vec4 PonctSrc[NBMAXPonctSrc]; 
  133. } Envi;
  134.  
  135. extern Envi *MakeEnvi(int NbDirecSrc, int NbPonctSrc, int AmbLight);
  136. extern char *load(char *Name);
  137. extern void LoadObj(char *Name, int ObjType, int ObjNr);
  138. extern Object *MakeObj(char *Name, int ObjType, int ObjNr);
  139. extern void MoveObj(Object *obj, int ra, int rs, int rt, int v);
  140. extern void PlaceObj(Object *obj, int ra, int rs, int rt, int x, int y, int z);
  141. extern void ReadObjCoord(Object*obj,int*ra,int*rs,int*rt,int*x,int*y,int*z);
  142. extern void PlotObj(Envi *envi, Object *obs, Object *obj);
  143.  
  144.