Main Page Class Hierarchy Compound List File List Compound Members File Members

Geometry.h

Go to the documentation of this file.
00001 /*
00002 File: Geometry.h
00003 
00004 Function: General geometrical definitions for points, vectors, etc.
00005 
00006 Author(s): Andrew Willmott
00007 
00008 Copyright: (c) 1995-2000, Andrew Willmott
00009 */
00010 
00011 #ifndef __Geometry__
00012 #define __Geometry__
00013 
00014 #include "gcl/GCLConfig.h"
00015 
00016 #include "cl/Array.h"
00017 #include "cl/NArray.h"
00018 
00019 
00020 // --- Fundamental primitives -------------------------------------------------
00021 
00022 #ifdef GCL_FLOAT
00023 #include "vl/VLfd.h"
00024 typedef Float GCLReal;
00025 typedef Vec3f Point; // We try and make provision here for points and
00026 typedef Vec3f Vector; // vectors being separate types in future...
00027 typedef Vec4f Vector4; 
00028 typedef Vec4d Quaternion;
00029 typedef Vec2f Coord; 
00030 
00031 typedef Vec4f HPoint;
00032 typedef Vec4f HVector;
00033 typedef Vecf GCLVec;
00034 #else
00035 #include "vl/VLd.h"
00036  typedef Double GCLReal;
00037  typedef Vec3d Point; 
00038  typedef Vec3d Vector; 
00039  typedef Vec4d Vector4; 
00040  typedef Vec4d Quaternion;
00041  typedef Vec2d Coord; 
00042 
00043  typedef Vec4d HPoint;
00044  typedef Vec4d HVector;
00045  typedef Vecd GCLVec;
00046 #endif
00047 
00048  typedef Vec3d MVector;
00049  typedef Vec4d MVector4;
00050  typedef Mat4d Transform;
00051  typedef Mat3d VecTrans;
00052  typedef Mat2d CoordTrans;
00053  typedef Matd GCLMat;
00054 
00055  typedef Int Index;
00056 
00057  inline Transform Rotation(const Vector &axis, GCLReal theta)
00058 { Transform result; result.MakeHRot(axis, theta); return(result); }
00059  inline Transform Rotation(const Quaternion &q)
00060 { Transform result; result.MakeHRot(q); return(result); }
00061  inline Transform Scale(const Vector &s)
00062 { Transform result; result.MakeHScale(MVector(s[0], s[1], s[2])); return(result); }
00063  inline Transform Scalef(GCLReal r)
00064 { Transform result; result.MakeHScale(MVector(r, r, r)); return(result); }
00065  inline Transform Shift(const Vector &t)
00066 { Transform result; result.MakeHTrans(MVector(t[0], t[1], t[2])); return(result); }
00067 
00068  inline Transform Scale(GCLReal sx, GCLReal sy, GCLReal sz)
00069 { Transform result; result.MakeHScale(MVector(sx, sy, sz)); return(result); }
00070  inline Transform Scale(GCLReal s)
00071 { Transform result; result.MakeHScale(MVector(s, s, s)); return(result); }
00072  inline Transform Shift(GCLReal tx, GCLReal ty, GCLReal tz)
00073 { Transform result; result.MakeHTrans(MVector(tx, ty, tz)); return(result); }
00074 
00075 Transform Align(const Vector &xAxis, const Vector &yAxis, const Vector &zAxis);
00076 Transform AlignToDir(const Vector &dir);
00077 
00078 
00079  typedef Array<Int> IndexList;
00080  typedef Array<GCLReal> ScalarList;
00081  typedef NArray<Point> PointList;
00082  typedef NArray<Vector> VectorList;
00083  typedef NArray<Coord> CoordList;
00084  typedef VectorList NormalList;
00085 
00086  inline GCLReal DegsToRads(GCLReal degrees) 
00087  { return(degrees * (vl_pi / 180.0)); }
00088 inline GCLReal RadsToDegs(GCLReal rads) 
00089 { return(rads * (180.0 / vl_pi)); }
00090  
00091 IndexList Indexes(Int first, ...); 
00092 const Index IDX_END = -1; 
00093 
00094 #endif

Generated at Sat Aug 5 00:16:59 2000 for Graphics Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000

AltStyle によって変換されたページ (->オリジナル) /