![]() |
Shadowrun: Awakened 29 September 2011 - Build 871
|
Go to the source code of this file.
Functions | |
| void | rt_tri_box (void *tex, vector min, vector max) |
| void | rt_tri_cylinder (void *tex, vector ctr, vector axis, apiflt rad) |
| void | rt_tri_fcylinder (void *tex, vector ctr, vector axis, apiflt rad) |
| void | rt_tri_plane (void *tex, vector ctr, vector norm) |
| void | rt_tri_ring (void *tex, vector ctr, vector norm, apiflt a, apiflt b) |
Definition at line 180 of file apitrigeom.cpp.
References rt_tri(), rt_vector(), vector::x, vector::y, and vector::z.
{
/* -XY face */
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(min.x, max.y, min.z),
rt_vector(max.x, max.y, min.z));
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(max.x, max.y, min.z),
rt_vector(max.x, min.y, min.z));
/* +XY face */
rt_tri(tex, rt_vector(min.x, min.y, max.z),
rt_vector(max.x, max.y, max.z),
rt_vector(min.x, max.y, max.z));
rt_tri(tex, rt_vector(min.x, min.y, max.z),
rt_vector(max.x, min.y, max.z),
rt_vector(max.x, max.y, max.z));
/* -YZ face */
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(min.x, max.y, max.z),
rt_vector(min.x, min.y, max.z));
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(min.x, max.y, min.z),
rt_vector(min.x, max.y, max.z));
/* +YZ face */
rt_tri(tex, rt_vector(max.x, min.y, min.z),
rt_vector(max.x, min.y, max.z),
rt_vector(max.x, max.y, max.z));
rt_tri(tex, rt_vector(max.x, min.y, min.z),
rt_vector(max.x, max.y, max.z),
rt_vector(max.x, max.y, min.z));
/* -XZ face */
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(min.x, min.y, max.z),
rt_vector(max.x, min.y, max.z));
rt_tri(tex, rt_vector(min.x, min.y, min.z),
rt_vector(max.x, min.y, max.z),
rt_vector(max.x, min.y, min.z));
/* +XZ face */
rt_tri(tex, rt_vector(min.x, max.y, min.z),
rt_vector(max.x, max.y, max.z),
rt_vector(min.x, max.y, max.z));
rt_tri(tex, rt_vector(min.x, max.y, min.z),
rt_vector(max.x, max.y, min.z),
rt_vector(max.x, max.y, max.z));
}
Definition at line 128 of file apitrigeom.cpp.
References rt_fcylinder().
{
rt_fcylinder(tex, ctr, axis, rad);
}
Definition at line 79 of file apitrigeom.cpp.
References CYLFACETS, MyVAddS, MyVCross, MyVNorm, rt_stri(), vector::x, vector::y, and vector::z.
{
vector x, y, z, tmp;
double u, v, u2, v2;
int j;
vector p1, p2, p3, p4;
vector n1, n2;
z = axis;
MyVNorm(&z);
tmp.x = z.y - 2.1111111;
tmp.y = -z.z + 3.14159267;
tmp.z = z.x - 3.915292342341;
MyVNorm(&z);
MyVNorm(&tmp);
MyVCross(&z, &tmp, &x);
MyVNorm(&x);
MyVCross(&x, &z, &y);
MyVNorm(&y);
for (j=0; j<CYLFACETS; j++) {
u = rad * sin((6.28 * j) / (CYLFACETS - 1.0));
v = rad * cos((6.28 * j) / (CYLFACETS - 1.0));
u2 = rad * sin((6.28 * (j + 1.0)) / (CYLFACETS - 1.0));
v2 = rad * cos((6.28 * (j + 1.0)) / (CYLFACETS - 1.0));
p1.x = p1.y = p1.z = 0.0;
p4 = p3 = p2 = p1;
MyVAddS(u, &x, &p1, &p1);
MyVAddS(v, &y, &p1, &p1);
n1 = p1;
MyVNorm(&n1);
MyVAddS(1.0, &ctr, &p1, &p1);
MyVAddS(u2, &x, &p2, &p2);
MyVAddS(v2, &y, &p2, &p2);
n2 = p2;
MyVNorm(&n2);
MyVAddS(1.0, &ctr, &p2, &p2);
MyVAddS(1.0, &axis, &p1, &p3);
MyVAddS(1.0, &axis, &p2, &p4);
rt_stri(tex, p1, p2, p3, n1, n2, n1);
rt_stri(tex, p3, p2, p4, n1, n2, n2);
}
}
Definition at line 233 of file apitrigeom.cpp.
References rt_tri_ring().
{
rt_tri_ring(tex, ctr, norm, 0.0, 10000.0);
}
Definition at line 132 of file apitrigeom.cpp.
References MyVAddS, MyVCross, MyVNorm, RINGFACETS, rt_stri(), vector::x, vector::y, and vector::z.
Referenced by rt_tri_plane().
{
vector x, y, z, tmp;
double u, v, u2, v2;
int j;
vector p1, p2, p3, p4;
vector n1, n2;
z = norm;
MyVNorm(&z);
tmp.x = z.y - 2.1111111;
tmp.y = -z.z + 3.14159267;
tmp.z = z.x - 3.915292342341;
MyVNorm(&z);
MyVNorm(&tmp);
MyVCross(&z, &tmp, &x);
MyVNorm(&x);
MyVCross(&x, &z, &y);
MyVNorm(&y);
for (j=0; j<RINGFACETS; j++) {
u = sin((6.28 * j) / (RINGFACETS - 1.0));
v = cos((6.28 * j) / (RINGFACETS - 1.0));
u2 = sin((6.28 * (j + 1.0)) / (RINGFACETS - 1.0));
v2 = cos((6.28 * (j + 1.0)) / (RINGFACETS - 1.0));
p1.x = p1.y = p1.z = 0.0;
p4 = p3 = p2 = p1;
MyVAddS(u, &x, &p1, &p1);
MyVAddS(v, &y, &p1, &p1);
n1 = p1;
MyVNorm(&n1);
MyVAddS(a, &n1, &ctr, &p1);
MyVAddS(b, &n1, &ctr, &p3);
MyVAddS(u2, &x, &p2, &p2);
MyVAddS(v2, &y, &p2, &p2);
n2 = p2;
MyVNorm(&n2);
MyVAddS(a, &n2, &ctr, &p2);
MyVAddS(b, &n2, &ctr, &p4);
rt_stri(tex, p1, p2, p3, norm, norm, norm);
rt_stri(tex, p3, p2, p4, norm, norm, norm);
}
}
Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.