GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
FloatVolumeObject.hh
Go to the documentation of this file.
1
2#include "Graph.hh"
3
4struct UV
5{
6 float U;
7 float V;
8};
9
11{
12public:
13 // inside object < 0
14 // outside object > 0
15 // border ==0
16 virtual float Value(Point p) const=0;
17 virtual int Id(Point p) const=0;
18 virtual UV TexCoords(int id, Point p) const=0;
19};
20
22{
23public:
24 virtual Color MapColor(int id, UV uv, Point p) const=0;
25};
26
27
29{
30public:
31 FVOToContinuousVoxel(FloatVolumeObject &fvo, float sx, float sy, float sz): fvo(fvo) { }
32 virtual float SizeX() const { return sx; }
33 virtual float SizeY() const { return sy; }
34 virtual float SizeZ() const { return sz; }
35 virtual float Map(float x, float y, float z) const
36 {
37 return fvo.Value(Point(x,y,z));
38 }
39private:
41};
42
44{
45public:
46 virtual float Value(Point p) const { return sqrt(p.x*p.x+p.y*p.y+p.z*p.z); }
47};
48
50{
51public:
52 SphereFVO(Point center, float radius, int id) : center(center), radius(radius), id(id) { }
53 virtual float Value(Point p) const { p-=center; return dist.Value(p)-radius; }
54
55 virtual int Id(Point p) const { return id; }
56 virtual UV TexCoords(int id, Point p) const
57 {
59 Point p = m * p;
60
61 UV uv;
62 uv.U = p.x;
63 uv.V = p.y;
64 return uv;
65 }
66
67private:
68 Point center;
69 float radius;
70 DistanceFVO dist;
71 int id;
72};
73
75{
76public:
77 OrFVO(FloatVolumeObject &o1, FloatVolumeObject &o2) : o1(o1), o2(o2) { }
78 virtual float Value(Point p) const
79 {
80 return std::min(o1.Value(p),o2.Value(p));
81 }
82 virtual int Id(Point p) const
83 {
84 float val = o1.Value(p);
85 float val2 = o2.Value(p);
86 if (val<val2) { return o1.Id(p); }
87 return o2.Id(p);
88 }
89
90 virtual UV TexCoords(int id, Point p) const
91 {
92 if (o1.Id(p)==id) { return o1.TexCoords(id,p); }
93 if (o2.Id(p)==id) { return o2.TexCoords(id,p); }
94 UV uv;
95 uv.U = 0.0;
96 uv.V = 0.0;
97 return uv;
98 }
99
100private:
101 FloatVolumeObject &o1, &o2;
102};
103
105{
106public:
107 OrFVO(FloatVolumeObject &o1, FloatVolumeObject &o2) : o1(o1), o2(o2) { }
108 virtual float Value(Point p) const
109 {
110 return std::max(o1.Value(p),o2.Value(p));
111 }
112 virtual int Id(Point p) const
113 {
114 float val = o1.Value(p);
115 float val2 = o2.Value(p);
116 if (val>val2) { return o1.Id(p); }
117 return o2.Id(p);
118 }
119 virtual UV TexCoords(int id, Point p) const
120 {
121 if (o1.Id(p)==id) { return o1.TexCoords(id,p); }
122 if (o2.Id(p)==id) { return o2.TexCoords(id,p); }
123 UV uv;
124 uv.U = 0.0;
125 uv.V = 0.0;
126 return uv;
127 }
128
129private:
130 FloatVolumeObject &o1, &o2;
131};
Definition VectorTools.hh:380
Definition GraphI.hh:1188
Definition FloatVolumeObject.hh:44
virtual float Value(Point p) const
Definition FloatVolumeObject.hh:46
virtual float SizeZ() const
Definition FloatVolumeObject.hh:34
FVOToContinuousVoxel(FloatVolumeObject &fvo, float sx, float sy, float sz)
Definition FloatVolumeObject.hh:31
virtual float SizeY() const
Definition FloatVolumeObject.hh:33
virtual float Map(float x, float y, float z) const
Definition FloatVolumeObject.hh:35
virtual float SizeX() const
Definition FloatVolumeObject.hh:32
Definition FloatVolumeObject.hh:11
virtual float Value(Point p) const =0
virtual int Id(Point p) const =0
virtual UV TexCoords(int id, Point p) const =0
Definition FloatVolumeObject.hh:22
virtual Color MapColor(int id, UV uv, Point p) const =0
Definition FloatVolumeObject.hh:75
virtual int Id(Point p) const
Definition FloatVolumeObject.hh:82
OrFVO(FloatVolumeObject &o1, FloatVolumeObject &o2)
Definition FloatVolumeObject.hh:77
virtual float Value(Point p) const
Definition FloatVolumeObject.hh:78
virtual UV TexCoords(int id, Point p) const
Definition FloatVolumeObject.hh:90
Definition VectorTools.hh:279
static Matrix CartesianToSpherical(Point p)
Definition VectorTools.cc:686
virtual UV TexCoords(int id, Point p) const
Definition FloatVolumeObject.hh:56
virtual float Value(Point p) const
Definition FloatVolumeObject.hh:53
virtual int Id(Point p) const
Definition FloatVolumeObject.hh:55
SphereFVO(Point center, float radius, int id)
Definition FloatVolumeObject.hh:52
Definition FloatVolumeObject.hh:105
virtual UV TexCoords(int id, Point p) const
Definition FloatVolumeObject.hh:119
virtual int Id(Point p) const
Definition FloatVolumeObject.hh:112
OrFVO(FloatVolumeObject &o1, FloatVolumeObject &o2)
Definition FloatVolumeObject.hh:107
virtual float Value(Point p) const
Definition FloatVolumeObject.hh:108
border radius
Definition gameapi_example.php:45
Definition Parser.cc:60
float x
Definition Parser.cc:60
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60
Definition FloatVolumeObject.hh:5
float V
Definition FloatVolumeObject.hh:7
float U
Definition FloatVolumeObject.hh:6