D
Ja sauber, ich habs geschafft!!!
Sollte es jemanden Interessieren:
// Dies Wird Einmal Berechnet
for(int l=0;l<lineCount;++l) {
float dx=abs(lines[l].x2-lines[l].x1),
dy=abs(lines[l].y2-lines[l].y1),
dz=abs(lines[l].z2-lines[l].z1);
if(lines[l].z1<lines[l].z2) {
float tX=lines[l].x1, tY=lines[l].y1, tZ=lines[l].z1;
lines[l].x1=lines[l].x2;
lines[l].y1=lines[l].y2;
lines[l].z1=lines[l].z2;
lines[l].x2=tX;
lines[l].y2=tY;
lines[l].z2=tZ;
}
lines[l].rotX=360.0f/myPi2*asin(dy/sqrtf(pow(dx, 2)+pow(dy, 2)+pow(dz, 2)));
lines[l].rotY=(dx==0&&dz==0) ? 0.0f : 360.0f/myPi2*(asin(dx/sqrtf( pow(dx, 2)+pow(dz, 2))));
if(lines[l].x1>lines[l].x2)
lines[l].rotY*=-1.0f;
if(lines[l].y1>lines[l].y2)
lines[l].rotX*=-1.0f;
lines[l].length=sqrtf(pow(dx, 2)+pow(dy, 2)+pow(dz, 2));
}
// In jedem Frame Wird Dann Aufgerfufen:
GLUquadricObj *quadratic;
quadratic=gluNewQuadric();
gluQuadricNormals(quadratic, GLU_SMOOTH);
for(int l=0;l<lineCount;++l) {
glColor3f(lines[l].color.r, lines[l].color.g, lines[l].color.b);
glPushMatrix();
glTranslatef(lines[l].x1, lines[l].y1, lines[l].z1);
glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
glRotatef(lines[l].rotY, 0.0f, 1.0f, 0.0f);
glRotatef(lines[l].rotX, 1.0f, 0.0f, 0.0f);
gluCylinder(quadratic, 0.15f, 0.15f, lines[l].length, 8, 1);
glPopMatrix();
}
gluDeleteQuadric(quadratic);
[ Dieser Beitrag wurde am 10.06.2003 um 16:24 Uhr von DasPinsch editiert. ]