GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
Coordinates.hh
Go to the documentation of this file.
1
2#include "VectorTools.hh"
3#include "Plane.hh"
4
6{
7public:
8 virtual Point Transform(Point p) const=0;
9};
10
12{
13public:
14 virtual Matrix Transform(Point p) const=0;
15};
16
18{
19public:
20 virtual Matrix Mat(float x) const=0;
21};
22
24{
25public:
28 {
29 Matrix m = t.Transform(p);
30 return p*m;
31 }
32private:
34};
35
37{
38public:
39 SinTransform(float dist_x, float speed_x,
40 float dist_y, float speed_y,
41 float dist_z, float speed_z)
42 : dist_x(dist_x),
43 dist_y(dist_y),
44 dist_z(dist_z),
45 spx(speed_x),
46 spy(speed_y),
47 spz(speed_z)
48 { }
50 {
51 Point pp;
52 pp.x = p.x + dist_x * cos(p.x*spx);
53 pp.y = p.y + dist_y * cos(p.y*spy);
54 pp.z = p.z + dist_z * cos(p.z*spz);
55 return pp;
56 }
57private:
58 float dist_x, dist_y, dist_z;
59 float spx, spy, spz;
60};
61
63{
64public:
65 virtual Point2d Transform(Point2d p) const=0;
66};
68{
69public:
70 Translate2d(Point2d p) : p(p) { }
72 {
73 Point2d px;
74 px.x = pp.x + p.x;
75 px.y = pp.y + p.y;
76 return px;
77 }
78
79private:
80 Point2d p;
81};
82
83
85{
86public:
87 // p.x = radius
88 // p.y = angle
90 {
91 Point2d pp;
92 pp.x = polar.x * cos(polar.y);
93 pp.y = polar.x * sin(polar.y);
94 return pp;
95 }
96};
98{
99public:
101 {
102 Point2d pp;
103 pp.x = sqrt(p.x*p.x+p.y*p.y);
104 if (p.x == 0 && p.y == 0)
105 pp.y = 0;
106 else if (p.x>=0)
107 pp.y = asin(p.y/pp.x);
108 else pp.y = -asin(p.y/pp.x)+3.14159;
109 return pp;
110 }
111};
112
114{
115public:
117 {
118 SphericalPoint sp(Point(0.0,0.0,0.0));
119 sp.FromPoint(p);
120 return Point(sp.r, sp.alfa, sp.beta);
121
122 }
123};
124
126{
127public:
129 {
130 SphericalPoint sp(Point(0.0,0.0,0.0));
131 sp.r = p.x;
132 sp.alfa = p.y;
133 sp.beta = p.z;
134 return sp.ToPoint();
135 }
136};
137
139{
140public:
141 virtual Point Transform(Point p) const
142 {
143 Point2d pp;
144 pp.x = p.x;
145 pp.y = p.y;
146 Point2d pp2 = c.Transform(pp);
147 Point res;
148 res.x = pp2.x;
149 res.y = pp2.y;
150 res.z = p.z;
151 return res;
152 }
153private:
155};
156
157
159{
160public:
161 virtual Point Transform(Point p) const
162 {
163 Point2d pp;
164 pp.x = p.x;
165 pp.y = p.y;
166 Point2d pp2 = c.Transform(pp);
167 Point res;
168 res.x = pp2.x;
169 res.y = pp2.y;
170 res.z = p.z;
171 return res;
172 }
173private:
175};
176
177
179{
180public:
181 virtual Point Transform(Point2d p) const=0;
182};
183
185{
186public:
187 PlaneSurface(Plane pl) : pl(pl) { }
188 Point Transform(Point2d p) const;
189private:
190 Plane pl;
191};
192
194{
195public:
196 SphereSurface(Point center, float radius) : center(center), radius(radius) { }
198 {
199 Point pp;
200 pp.x = radius*sin(p.x)*cos(p.y);
201 pp.y = radius*sin(p.x)*sin(p.y);
202 pp.z = radius*cos(p.x);
203 pp += center;
204 return pp;
205 }
206private:
207 Point center;
208 float radius;
209};
210
212{
213public:
214 TorusSurface(Point2d center, float dist1, float dist2, Plane pl) : cmc(dist1), circle(center, dist2), plane(pl), circle_plane(circle, plane), cmult(cmc, circle_plane) { }
216 {
217 return cmult.Index(p.x, p.y);
218 }
219
220public:
226};
227
229{
230public:
231 virtual float Value(Point2d p) const=0;
232};
233
235{
236public:
238
240 {
241 Point res;
242 res.x = p.x;
243 res.y = p.y;
244 res.z = val.Value(p);
245 return res;
246 }
247private:
248 SurfaceValue &val;
249
250};
251
253{
254public:
257 float time) // 0.0 .. 1.0'
258 : s1(s1),
259 s2(s2),
260 time(time) { }
262 {
263 Point p1 = s1.Transform(p);
264 Point p2 = s2.Transform(p);
265 LineIn3d l(p1,p2);
266 return l.Index(time);
267 }
268private:
271 float time;
272};
273
274class GridTo3d : public GridIn3d
275{
276public:
277 GridTo3d(GridIn2d &g, SurfaceTransform &transform) : g(g), transform(transform) { }
278 Point Index(int x, int y) const { return transform.Transform(g.Index(x,y)); }
279 virtual Point2d Texture(int x, int y) const { Point2d p; p.x = 0.0; p.y=0.0; return p; }
280 virtual unsigned int Color(int x, int y) const
281 {
282 return Color::White().Pixel();
283 }
284
285 virtual Vector Normal(int x, int y) const
286 {
287 Point p = Index(x,y);
288 Point px = Index(x+1,y);
289 Point py = Index(x,y+1);
290 Vector vx = px - p;
291 Vector vy = py - p;
292 return Vector::CrossProduct(vx, vy);
293 }
294 virtual float Attrib(int x, int y, int id) const
295 {
296 return 0.0;
297 }
298 virtual int AttribI(int x, int y, int id) const
299 {
300 return 0;
301 }
302 int XSize() const { return g.XSize(); }
303 int YSize() const { return g.YSize(); }
304
305private:
306 GridIn2d &g;
307 SurfaceTransform &transform;
308};
309
310class UnitPlane : public GridIn2d
311{
312public: // [0.0 .. 1.0]x[0.0 .. 1.0]
313 UnitPlane(int x, int y) : x(x), y(y) { }
314 virtual int XSize() const { return x; }
315 virtual int YSize() const { return y; }
316 virtual Point2d Index(int xx, int yy) const
317 {
318 Point2d p;
319 p.x = float(xx)/float(x);
320 p.y = float(yy)/float(y);
321 return p;
322 }
323private:
324 int x, y;
325};
326
328{
329public:
330 TransformPlane(GridIn2d &g, CoordTransform2d &coord) : g(g), coord(coord) { }
331 virtual int XSize() const { return g.XSize(); }
332 virtual int YSize() const { return g.YSize(); }
333 virtual Point2d Index(int x, int y) const { return coord.Transform(g.Index(x,y)); }
334
335private:
336 GridIn2d &g;
337 CoordTransform2d &coord;
338};
339
341{
342public:
344 bool Frame(float time);
345};
Definition Effect.hh:1718
Definition Effect.hh:2060
unsigned int Pixel()
Definition VectorTools.hh:426
static Color White()
Definition VectorTools.hh:476
Definition Coordinates.hh:63
virtual Point2d Transform(Point2d p) const =0
Definition Coordinates.hh:6
virtual Point Transform(Point p) const =0
Definition Effect.hh:2171
Definition Coordinates.hh:18
virtual Matrix Mat(float x) const =0
FrameAnim(Render *render)
Definition Effect.hh:110
Definition Coordinates.hh:159
virtual Point Transform(Point p) const
Definition Coordinates.hh:161
Definition Coordinates.hh:85
Point2d Transform(Point2d polar) const
Definition Coordinates.hh:89
Definition Coordinates.hh:126
Point Transform(Point p) const
Definition Coordinates.hh:128
Definition Plane.hh:8
Definition Effect.hh:2023
GridTo3d(GridIn2d &g, SurfaceTransform &transform)
Definition Coordinates.hh:277
virtual int AttribI(int x, int y, int id) const
Definition Coordinates.hh:298
virtual Point2d Texture(int x, int y) const
Definition Coordinates.hh:279
Point Index(int x, int y) const
Definition Coordinates.hh:278
virtual unsigned int Color(int x, int y) const
Definition Coordinates.hh:280
virtual Vector Normal(int x, int y) const
Definition Coordinates.hh:285
int YSize() const
Definition Coordinates.hh:303
int XSize() const
Definition Coordinates.hh:302
virtual float Attrib(int x, int y, int id) const
Definition Coordinates.hh:294
HeightMapSurfaceTransform(SurfaceValue &val)
Definition Coordinates.hh:237
Point Transform(Point2d p) const
Definition Coordinates.hh:239
Point Transform(Point2d p) const
Definition Coordinates.hh:261
InterpolateSurfaceTransform(SurfaceTransform &s1, SurfaceTransform &s2, float time)
Definition Coordinates.hh:255
Point Transform(Point p) const
Definition Coordinates.hh:27
LinPosCoordTransform(LinPosTransform &t)
Definition Coordinates.hh:26
Definition Coordinates.hh:12
virtual Matrix Transform(Point p) const =0
Definition Effect.hh:1866
virtual Point Index(float pos) const
Definition Effect.hh:1869
Definition VectorTools.hh:279
Definition Effect.hh:2245
PlaneSurface(Plane pl)
Definition Coordinates.hh:187
Point Transform(Point2d p) const
Definition Coordinates.cc:5
Definition VectorTools.hh:350
Definition Effect.hh:9514
SinTransform(float dist_x, float speed_x, float dist_y, float speed_y, float dist_z, float speed_z)
Definition Coordinates.hh:39
Point Transform(Point p) const
Definition Coordinates.hh:49
Point Transform(Point2d p) const
Definition Coordinates.hh:197
SphereSurface(Point center, float radius)
Definition Coordinates.hh:196
Definition VectorTools.hh:106
float r
Definition VectorTools.hh:113
float alfa
Definition VectorTools.hh:114
void FromPoint(Point v)
Definition VectorTools.cc:97
float beta
Definition VectorTools.hh:115
Point ToPoint()
Definition VectorTools.cc:87
Definition Coordinates.hh:179
virtual Point Transform(Point2d p) const =0
Definition Coordinates.hh:229
virtual float Value(Point2d p) const =0
Definition Coordinates.hh:139
virtual Point Transform(Point p) const
Definition Coordinates.hh:141
Definition Coordinates.hh:98
Point2d Transform(Point2d p) const
Definition Coordinates.hh:100
Definition Coordinates.hh:114
Point Transform(Point p) const
Definition Coordinates.hh:116
Circle circle
Definition Coordinates.hh:222
CurveMultiply cmult
Definition Coordinates.hh:225
TorusSurface(Point2d center, float dist1, float dist2, Plane pl)
Definition Coordinates.hh:214
PlaneCurveIn3d circle_plane
Definition Coordinates.hh:224
Point Transform(Point2d p) const
Definition Coordinates.hh:215
CircleMatrixCurve cmc
Definition Coordinates.hh:221
Plane plane
Definition Coordinates.hh:223
TransformEffect(Render *r)
Definition Coordinates.hh:343
bool Frame(float time)
Definition Coordinates.cc:11
virtual int YSize() const
Definition Coordinates.hh:332
TransformPlane(GridIn2d &g, CoordTransform2d &coord)
Definition Coordinates.hh:330
virtual Point2d Index(int x, int y) const
Definition Coordinates.hh:333
virtual int XSize() const
Definition Coordinates.hh:331
Translate2d(Point2d p)
Definition Coordinates.hh:70
Point2d Transform(Point2d pp) const
Definition Coordinates.hh:71
virtual int YSize() const
Definition Coordinates.hh:315
UnitPlane(int x, int y)
Definition Coordinates.hh:313
virtual Point2d Index(int xx, int yy) const
Definition Coordinates.hh:316
virtual int XSize() const
Definition Coordinates.hh:314
Definition VectorTools.hh:125
static Vector CrossProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:193
border radius
Definition gameapi_example.php:45
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
Definition Parser.cc:60
float x
Definition Parser.cc:60
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60