TORCS  1.3.9
The Open Racing Car Simulator
solid.h
Go to the documentation of this file.
1 /*
2  SOLID - Software Library for Interference Detection
3  Copyright (C) 1997-1998 Gino van den Bergen
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public
16  License along with this library; if not, write to the Free
17  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 
19  Please send remarks, questions and bug reports to gino@win.tue.nl,
20  or write to:
21  Gino van den Bergen
22  Department of Mathematics and Computing Science
23  Eindhoven University of Technology
24  P.O. Box 513, 5600 MB Eindhoven, The Netherlands
25 */
26 
27 #ifndef _SOLID_H_
28 #define _SOLID_H_
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 typedef double DtScalar;
35 typedef DtScalar DtVector[3];
36 typedef unsigned int DtIndex;
37 typedef unsigned int DtCount;
38 
39 typedef void *DtObjectRef;
40 typedef void *DtShapeRef;
41 
42 typedef enum DtPolyType {
46 } DtPolyType;
47 
48 typedef enum DtResponseType {
54 
55 typedef struct DtCollData {
59 } DtCollData;
60 
61 typedef void (*DtResponse)(
62  void *client_data,
63  DtObjectRef object1,
64  DtObjectRef object2,
65  const DtCollData *coll_data);
66 
67 
68 
69 /* Shape definition */
70 
72 extern DtShapeRef dtCone(DtScalar radius, DtScalar height);
73 extern DtShapeRef dtCylinder(DtScalar radius, DtScalar height);
74 extern DtShapeRef dtSphere(DtScalar radius);
75 
77 extern void dtEndComplexShape();
78 
79 extern void dtBegin(DtPolyType type);
80 extern void dtEnd();
81 
82 extern void dtVertex(DtScalar x, DtScalar y, DtScalar z);
83 extern void dtVertexBase(const void *base);
84 extern void dtVertexIndex(DtIndex index);
85 extern void dtVertexIndices(DtPolyType type, DtCount count,
86  const DtIndex *indices);
87 extern void dtVertexRange(DtPolyType type, DtIndex first, DtCount count);
88 
89 extern void dtChangeVertexBase(DtShapeRef shape, const void *base);
90 
91 extern void dtDeleteShape(DtShapeRef shape);
92 
93 
94 /* Object */
95 
96 extern void dtCreateObject(DtObjectRef object, DtShapeRef shape);
97 extern void dtDeleteObject(DtObjectRef object);
98 extern void dtSelectObject(DtObjectRef object);
99 
100 extern void dtLoadIdentity();
101 
102 extern void dtLoadMatrixf(const float *m);
103 extern void dtLoadMatrixd(const double *m);
104 
105 extern void dtMultMatrixf(const float *m);
106 extern void dtMultMatrixd(const double *m);
107 
108 extern void dtTranslate(DtScalar x, DtScalar y, DtScalar z);
109 extern void dtRotate(DtScalar x, DtScalar y, DtScalar z, DtScalar w);
110 extern void dtScale(DtScalar x, DtScalar y, DtScalar z);
111 
112 
113 /* Response */
114 
115 extern void dtSetDefaultResponse(DtResponse response, DtResponseType type,
116  void *client_data);
117 
118 extern void dtClearDefaultResponse();
119 
120 extern void dtSetObjectResponse(DtObjectRef object, DtResponse response,
121  DtResponseType type, void *client_data);
122 extern void dtClearObjectResponse(DtObjectRef object);
123 extern void dtResetObjectResponse(DtObjectRef object);
124 
125 extern void dtSetPairResponse(DtObjectRef object1, DtObjectRef object2,
126  DtResponse response, DtResponseType type,
127  void *client_data);
128 extern void dtClearPairResponse(DtObjectRef object1, DtObjectRef object2);
129 extern void dtResetPairResponse(DtObjectRef object1, DtObjectRef object2);
130 
131 
132 /* Global */
133 
134 extern DtCount dtTest();
135 extern void dtProceed();
136 
137 extern void dtEnableCaching();
138 extern void dtDisableCaching();
139 
140 extern void dtSetTolerance(DtScalar tol);
141 
142 #ifdef __cplusplus
143 }
144 #endif
145 
146 #endif
void dtDeleteObject(DtObjectRef object)
Definition: C-api.cpp:206
DtShapeRef dtCone(DtScalar radius, DtScalar height)
Definition: C-api.cpp:88
DtVector point1
Definition: solid.h:56
void dtLoadIdentity()
Definition: C-api.cpp:228
void dtSetObjectResponse(DtObjectRef object, DtResponse response, DtResponseType type, void *client_data)
Definition: C-api.cpp:259
void dtRotate(DtScalar x, DtScalar y, DtScalar z, DtScalar w)
Definition: C-api.cpp:220
void dtVertex(DtScalar x, DtScalar y, DtScalar z)
Definition: C-api.cpp:124
void dtProceed()
Definition: C-api.cpp:288
DtScalar DtVector[3]
Definition: solid.h:35
DtShapeRef dtCylinder(DtScalar radius, DtScalar height)
Definition: C-api.cpp:92
void dtBegin(DtPolyType type)
Definition: C-api.cpp:118
void dtSetPairResponse(DtObjectRef object1, DtObjectRef object2, DtResponse response, DtResponseType type, void *client_data)
Definition: C-api.cpp:272
void dtSetTolerance(DtScalar tol)
Definition: C-api.cpp:306
void dtClearPairResponse(DtObjectRef object1, DtObjectRef object2)
Definition: C-api.cpp:278
void dtClearObjectResponse(DtObjectRef object)
Definition: C-api.cpp:264
unsigned int DtCount
Definition: solid.h:37
void dtMultMatrixf(const float *m)
Definition: C-api.cpp:240
void dtScale(DtScalar x, DtScalar y, DtScalar z)
Definition: C-api.cpp:224
void dtLoadMatrixf(const float *m)
Definition: C-api.cpp:232
void(* DtResponse)(void *client_data, DtObjectRef object1, DtObjectRef object2, const DtCollData *coll_data)
Definition: solid.h:61
DtShapeRef dtNewComplexShape()
Definition: C-api.cpp:100
void dtLoadMatrixd(const double *m)
Definition: C-api.cpp:236
double DtScalar
Definition: solid.h:34
void dtVertexIndices(DtPolyType type, DtCount count, const DtIndex *indices)
Definition: C-api.cpp:139
void dtTranslate(DtScalar x, DtScalar y, DtScalar z)
Definition: C-api.cpp:216
void dtChangeVertexBase(DtShapeRef shape, const void *base)
void dtDisableCaching()
Definition: C-api.cpp:304
DtPolyType
Definition: solid.h:42
void dtVertexBase(const void *base)
DtVector normal
Definition: solid.h:58
void dtResetObjectResponse(DtObjectRef object)
Definition: C-api.cpp:268
void dtSelectObject(DtObjectRef object)
Definition: C-api.cpp:198
void dtVertexRange(DtPolyType type, DtIndex first, DtCount count)
Definition: C-api.cpp:163
unsigned int DtIndex
Definition: solid.h:36
static Vector y[4]
Definition: Convex.cpp:56
void dtDeleteShape(DtShapeRef shape)
Definition: C-api.cpp:170
DtVector point2
Definition: solid.h:57
void dtEndComplexShape()
Definition: C-api.cpp:105
void dtVertexIndex(DtIndex index)
Definition: C-api.cpp:137
struct DtCollData DtCollData
void dtMultMatrixd(const double *m)
Definition: C-api.cpp:244
void * DtObjectRef
Definition: solid.h:39
void dtResetPairResponse(DtObjectRef object1, DtObjectRef object2)
Definition: C-api.cpp:282
void dtEnableCaching()
Definition: C-api.cpp:297
DtCount dtTest()
Definition: C-api.cpp:346
void * DtShapeRef
Definition: solid.h:40
void dtEnd()
Definition: C-api.cpp:119
DtShapeRef dtBox(DtScalar x, DtScalar y, DtScalar z)
Definition: C-api.cpp:84
void dtClearDefaultResponse()
Definition: C-api.cpp:255
void dtCreateObject(DtObjectRef object, DtShapeRef shape)
Definition: C-api.cpp:193
DtResponseType
Definition: solid.h:48
DtShapeRef dtSphere(DtScalar radius)
Definition: C-api.cpp:96
void dtSetDefaultResponse(DtResponse response, DtResponseType type, void *client_data)
Definition: C-api.cpp:250