home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
i
/
iritsm3s.zip
/
irit
/
geomat3d.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-27
|
3KB
|
74 lines
/*****************************************************************************
* "Irit" - the 3d polygonal solid modeller. *
* *
* Written by: Gershon Elber Ver 0.2, Mar. 1990 *
******************************************************************************
* General definitions of/for GeoMat3D.c module *
*****************************************************************************/
#ifndef GEOMAT_3D_H
#define GEOMAT_3D_H
/* Used by the Ray & Polygon intersection (Jordan theorem): */
#define BELOW_RAY 1
#define ON_RAY 2
#define ABOVE_RAY 3
/* And prototypes of the functions: */
void MatGenUnitMat(MatrixType Mat);
void MatGenMatTrans(RealType Tx, RealType Ty, RealType Tz, MatrixType Mat);
void MatGenMatScale(RealType Sx, RealType Sy, RealType Sz, MatrixType Mat);
void MatGenMatRotX1(RealType Teta, MatrixType Mat);
void MatGenMatRotX(RealType CosTeta, RealType SinTeta, MatrixType Mat);
void MatGenMatRotY1(RealType Teta, MatrixType Mat);
void MatGenMatRotY(RealType CosTeta, RealType SinTeta, MatrixType Mat);
void MatGenMatRotZ1(RealType Teta, MatrixType Mat);
void MatGenMatRotZ(RealType CosTeta, RealType SinTeta, MatrixType Mat);
void MatMultTwo4by4(MatrixType MatRes, MatrixType Mat1, MatrixType Mat2);
void MatAddTwo4by4(MatrixType MatRes, MatrixType Mat1, MatrixType Mat2);
void MatSubTwo4by4(MatrixType MatRes, MatrixType Mat1, MatrixType Mat2);
void MatScale4by4(MatrixType MatRes, MatrixType Mat, RealType *Scale);
void MatMultVecby4by4(VectorType VRes, VectorType Vec, MatrixType Mat);
int MatInverseMatrix(MatrixType M, MatrixType InvM);
void VecCopy(VectorType Vdst, VectorType Vsrc);
void VecNormalize(VectorType V);
RealType VecLength(VectorType V);
void VecCrossProd(VectorType Vres, VectorType V1, VectorType V2);
RealType VecDotProd(VectorType V1, VectorType V2);
ObjectStruct *GenMatObjectRotX(RealType *Degree);
ObjectStruct *GenMatObjectRotY(RealType *Degree);
ObjectStruct *GenMatObjectRotZ(RealType *Degree);
ObjectStruct *GenMatObjectTrans(VectorType Vec);
ObjectStruct *GenMatObjectScale(VectorType Vec);
ObjectStruct *TransformObject(ObjectStruct *PObj, MatrixType Mat);
/* And the computational geometry routines: */
RealType CGDistPointPoint(PointType P1, PointType P2);
int CGPlaneFrom3Points(PlaneType Plane, PointType Pt1, PointType Pt2,
PointType Pt3);
void CGPointFromPointLine(PointType Point, PointType Pl, PointType Vl,
PointType ClosestPoint);
RealType CGDistPointLine(PointType Point, PointType Pl, PointType Vl);
RealType CGDistPointPlane(PointType Point, RealType Plane[4]);
int CGPointFromLinePlane(PointType Pl, PointType Vl, RealType Plane[4],
PointType InterPoint, RealType *t);
int CGPointFromLinePlane01(PointType Pl, PointType Vl, RealType Plane[4],
PointType InterPoint, RealType *t);
int CG2PointsFromLineLine(PointType Pl1, PointType Vl1,
PointType Pl2, PointType Vl2,
PointType Pt1, RealType *t1,
PointType Pt2, RealType *t2);
RealType CGDistLineLine(PointType Pl1, PointType Vl1,
PointType Pl2, PointType Vl2);
int CGPolygonRayInter(PolygonStruct *Pl, PointType PtRay, int RayAxes);
int CGPolygonRayInter3D(PolygonStruct *Pl, PointType PtRay, int RayAxes);
#endif /* GEOMAT_3D_H */