Lines Matching refs:cyl
90 static void cylinder_intersect(cylinder *cyl, ray *ry) { in cylinder_intersect() argument
94 rc.x = ry->o.x - cyl->ctr.x; in cylinder_intersect()
95 rc.y = ry->o.y - cyl->ctr.y; in cylinder_intersect()
96 rc.z = ry->o.z - cyl->ctr.z; in cylinder_intersect()
98 VCross(&ry->d, &cyl->axis, &n); in cylinder_intersect()
104 VDOT(d, rc, cyl->axis); in cylinder_intersect()
105 D.x = rc.x - d * cyl->axis.x; in cylinder_intersect()
106 D.y = rc.y - d * cyl->axis.y; in cylinder_intersect()
107 D.z = rc.z - d * cyl->axis.z; in cylinder_intersect()
119 if (d <= cyl->rad) { /* ray intersects cylinder.. */ in cylinder_intersect()
120 VCross(&rc, &cyl->axis, &O); in cylinder_intersect()
123 VCross(&n, &cyl->axis, &O); in cylinder_intersect()
126 s = fabs(sqrt(cyl->rad * cyl->rad - d * d) / s); in cylinder_intersect()
128 add_intersection(tin, (object *)cyl, ry); in cylinder_intersect()
130 add_intersection(tout, (object *)cyl, ry); in cylinder_intersect()
134 static void cylinder_normal(cylinder *cyl, vector *pnt, ray *incident, vector *N) { in cylinder_normal() argument
138 VSub((vector *)pnt, &(cyl->ctr), &a); in cylinder_normal()
140 c = cyl->axis; in cylinder_normal()
146 b.x = c.x * t + cyl->ctr.x; in cylinder_normal()
147 b.y = c.y * t + cyl->ctr.y; in cylinder_normal()
148 b.z = c.z * t + cyl->ctr.z; in cylinder_normal()
203 static void fcylinder_intersect(cylinder *cyl, ray *ry) { in fcylinder_intersect() argument
207 rc.x = ry->o.x - cyl->ctr.x; in fcylinder_intersect()
208 rc.y = ry->o.y - cyl->ctr.y; in fcylinder_intersect()
209 rc.z = ry->o.z - cyl->ctr.z; in fcylinder_intersect()
211 VCross(&ry->d, &cyl->axis, &n); in fcylinder_intersect()
224 if (d <= cyl->rad) { /* ray intersects cylinder.. */ in fcylinder_intersect()
225 VCross(&rc, &cyl->axis, &O); in fcylinder_intersect()
228 VCross(&n, &cyl->axis, &O); in fcylinder_intersect()
231 s = fabs(sqrt(cyl->rad * cyl->rad - d * d) / s); in fcylinder_intersect()
236 ctmp4 = cyl->axis; in fcylinder_intersect()
239 tmp2.x = hit.x - cyl->ctr.x; in fcylinder_intersect()
240 tmp2.y = hit.y - cyl->ctr.y; in fcylinder_intersect()
241 tmp2.z = hit.z - cyl->ctr.z; in fcylinder_intersect()
244 VDOT(tmp3, cyl->axis, cyl->axis); in fcylinder_intersect()
247 add_intersection(tin, (object *)cyl, ry); in fcylinder_intersect()
252 tmp2.x = hit.x - cyl->ctr.x; in fcylinder_intersect()
253 tmp2.y = hit.y - cyl->ctr.y; in fcylinder_intersect()
254 tmp2.z = hit.z - cyl->ctr.z; in fcylinder_intersect()
257 VDOT(tmp3, cyl->axis, cyl->axis); in fcylinder_intersect()
260 add_intersection(tout, (object *)cyl, ry); in fcylinder_intersect()