void drawsp(SceneHandle scene) { int i; apitexture p1; apivector ct1, n1; for (i=0; i<NUMSP; i++) { sp[i].voidtex = rt_texture(scene, &sp[i].tex); rt_sphere(scene, sp[i].voidtex, sp[i].ctr, sp[i].rad); } p1.col.r=1.0; p1.col.g=1.0; p1.col.b=1.0; p1.ambient=0.1; p1.diffuse=0.5; p1.specular=0.4; p1.opacity=1.0; ct1.x=0.0; ct1.y=-1.10; ct1.z=0.0; n1.x=0.0; n1.y=1.0; n1.z=0.0; rt_plane(scene, rt_texture(scene, &p1), ct1, n1); }
int NFFGetSphere(FILE *dfile, SceneHandle scene) { apiflt rad; apivector ctr; float a; NFFGetVector(dfile, &ctr); fscanf(dfile, "%f", &a); rad = a; rt_sphere(scene, curtexture, ctr, rad); return NFFNOERR; }
void rt_polycylinder(void * tex, vector * points, int numpts, apiflt rad) { vector a; int i; if ((points == NULL) || (numpts == 0)) { return; } if (numpts > 0) { rt_sphere(tex, points[0], rad); if (numpts > 1) { for (i=1; i<numpts; i++) { a.x = points[i].x - points[i-1].x; a.y = points[i].y - points[i-1].y; a.z = points[i].z - points[i-1].z; rt_fcylinder(tex, points[i-1], a, rad); rt_sphere(tex, points[i], rad); } } } }
static errcode GetSphere(parsehandle * ph, SceneHandle scene) { apiflt rad; apivector ctr; void * tex; float a; errcode rc; rc = GetString(ph, "CENTER"); rc |= GetVector(ph, &ctr); rc |= GetString(ph, "RAD"); fscanf(ph->ifp, "%f", &a); rad=a; rc |= GetTexture(ph, scene, &tex); rt_sphere(scene, tex, ctr, rad); return rc; }
static errcode GetSphere(FILE * dfile) { apiflt rad; vector ctr; void * tex; float a; errcode rc; rc = GetString(dfile,"CENTER"); rc |= GetVector(dfile, &ctr); rc |= GetString(dfile, "RAD"); fscanf(dfile,"%f",&a); rad=a; rc |= GetTexture(dfile, &tex); rt_sphere(tex, ctr, rad); return rc; }