/******************chaptrail**********************************/ void whereis3f(float xx, float yy, float zz, float *there){ /* there = U'*(X-m) = affinv*X */ xx -= aff[12] ; yy -= aff[13]; zz -= aff[14]; there[0]=aff[0]*xx + aff[1]*yy + aff[2]*zz; there[1]=aff[4]*xx + aff[5]*yy + aff[6]*zz; there[2]=aff[8]*xx + aff[9]*yy + aff[10]*zz; } void maketrail(void){ float right = tiewidth, left= -tiewidth; if(trailtie==maxtie)trailtie=0; whereis3f( right,0,0, trail[2*trailtie]); whereis3f(left, 0,0, trail[2*trailtie+1]); trailtie++; } void writetrail(void){ int ii,jj ; FOR(ii,0,trailtie){ FOR(jj,0,3)printf(" %.2g ", trail[2*ii][jj]); printf("\n"); FOR(jj,0,3)printf(" %.2g ", trail[2*ii +1][jj]); printf("\n"); } trailwryte=0; } void drawtrail(void){ int ii; glColor3f(1.0,0.8,0.0); /* glBegin(GL_LINE_STRIP); */ glBegin(GL_LINES); FOR(ii,0,trailtie-1){ glVertex3f(trail[2*ii][0], trail[2*ii][1],trail[2*ii][2]); glVertex3f(trail[2*ii+1][0], trail[2*ii+1][1],trail[2*ii+1][2]); } glEnd(); } /******************chaptrail**********************************/