33 virtual bool Inside(Point v)
const {
return false; }
35 virtual float Line(Point v, Point v2)
const {
return 0.0; }
36 virtual Color
ColorValue(Point v)
const {
return Color(255,255,255); }
37 virtual float Value(Point v)
const {
return 0.0; }
38 virtual Vector
Normal(Point v)
const {
return Vector(0.0,0.0,0.0); }
46 Phong(VolumeObject &t, Point viewer, Point light, Color lightcolor, Color spec_color) : tt(t), light(light), lightcolor(lightcolor), spec_color(spec_color)
48 Vector l_p_v = Vector(viewer) + Vector(light);
49 halfway = l_p_v/l_p_v.
Dist();
51 virtual bool Inside(Point v)
const {
return tt.Inside(v); }
52 virtual Vector
Normal(Point v)
const {
return tt.Normal(v); }
55 Vector normal = tt.Normal(p);
56 normal = normal/normal.Dist();
65 if (col < 0.0) col = 0.0;
66 if (col > 1.0) col = 1.0;
67 if (col2 < 0.0) col2 = 0.0;
68 if (col2 > 1.0) col2 = 1.0;
76 c.
r = int(col*lightcolor.
r+col2*spec_color.
r);
77 c.
g = int(col*lightcolor.
g+col2*spec_color.
g);
78 c.
b = int(col*lightcolor.
b+col2*spec_color.
b);
79 if (c.
r > 255) c.
r = 255;
80 if (c.
g > 255) c.
g = 255;
81 if (c.
b > 255) c.
b = 255;
96 Cone(
const Point &pos,
const Vector &line,
float rad1,
float rad2);
97 bool Inside(Point v)
const;
98 Vector
Normal(Point v)
const;
106 Point Part(
const U &u);
116 AndNot(VolumeObject &t, VolumeObject &k) : tt(t), kk(k) { }
117 bool Inside(Point v)
const
119 return tt.Inside(v) && !kk.Inside(v);
123 if (tt.Inside(v-Vector(0.0,0.0,0.01)))
124 return kk.ColorValue(v);
125 return tt.ColorValue(v);
127 Vector
Normal(Point v)
const
129 if (tt.Inside(v-Vector(0.0,0.0,0.01)))
130 return -kk.Normal(v);
142 Or(VolumeObject &t, VolumeObject &k) : tt(t), kk(k) { }
143 bool Inside(Point v)
const
145 return tt.Inside(v) || kk.Inside(v);
147 virtual Vector
Normal(Point v)
const
158 float Line(Point p, Point p2)
const
160 float f1 = tt.Line(p,p2);
161 float f2 = kk.Line(p,p2);
162 if (f1 < 0.0) f1 = 0.0002;
163 if (
f2 < 0.0)
f2 = 0.0002;
164 if (f1 < 0.0001)
return f2;
165 if (
f2 < 0.0001)
return f1;
166 return f2 < f1 ?
f2 : f1;
171 if (tt.Inside(v) && kk.Inside(v))
173 Color tc = tt.ColorValue(v);
174 Color kc = kk.ColorValue(v);
186 return tt.ColorValue(v);
188 else if (kk.Inside(v))
190 return kk.ColorValue(v);
194 return Color(
int(128.0*v.
x),
int(128.0*v.
y),
int(128.0*v.
z));
206 ColorSpec(VolumeObject &val_, Color c_) : c(c_), val(val_) { }
207 ColorSpec(VolumeObject &val_,
int r,
int g,
int b) : c(r,
g,b), val(val_) { }
209 float Value(Point v)
const {
return val.Value(v); }
210 bool Inside(Point v)
const {
return val.Inside(v); }
211 float Line(Point v, Point v2)
const {
return val.Line(v,v2); }
212 Color LineColor(Point v, Point v2)
const {
return c; }
213 virtual Vector
Normal(Point v)
const {
return val.Normal(v); }
222 VolumeBox(
float x1,
float y1,
float z1,
223 float x2,
float y2,
float z2) : tl(x1,y1,z1), br(x2,y2,z2) { }
224 VolumeBox(Vector top_left, Vector bottom_right) : tl(top_left), br(bottom_right) { }
225 bool Inside(Point p)
const
227 if (p.
x < tl.dx)
return false;
228 if (p.
x > br.dx)
return false;
230 if (p.
y < tl.dy)
return false;
231 if (p.
y > br.dy)
return false;
233 if (p.
z < tl.dz)
return false;
234 if (p.
z > br.dz)
return false;
SM Or(SM p1, SM p2)
Definition Language.hh:965
bool Inside(Rect r, Point2d p)
Definition Layout.hh:46
int r
Definition VectorTools.hh:744
int g
Definition VectorTools.hh:744
int b
Definition VectorTools.hh:744
Definition GameApi_vo.cc:1073
unsigned int ColorValue(Point p) const
Definition GameApi_vo.cc:1076
Phong(VectorVolumeObject *normal, Point lightpos, Color i_s, Color i_d, Color i_a, float k_s, float k_d, float k_a, float alfa)
Definition GameApi_vo.cc:1075
float Dist() const
Definition VectorTools.cc:141
static float DotProduct(const Vector &aVec, const Vector &aVec2)
Definition VectorTools.hh:185
Definition VolumeObjects.hh:130
virtual bool Inside(Point v) const
Definition VolumeObjects.hh:132
virtual Vector Normal(Point v) const
Definition VolumeObjects.hh:137
virtual ~VolumeObject()
Definition VolumeObjects.hh:138
virtual float Value(Point v) const
Definition VolumeObjects.hh:136
bool EquRel(Point p1, Point p2)
Definition VolumeObjects.hh:133
virtual float Line(Point v, Point v2) const
Definition VolumeObjects.hh:134
virtual Color ColorValue(Point v) const
Definition VolumeObjects.hh:135
P g(unsigned int c, EveryApi &ev)
Definition test.cpp:19
@ Normal
Definition httplib.h:3752
int f2(char c)
Definition test.cpp:51
float x
Definition Parser.cc:60
float y
Definition Parser.cc:60
float z
Definition Parser.cc:60