Witam. Szukam kogoś kto mi pomoże zrozumieć funkcje rysującą sprężyne w opengl
void spring(float size) {
const float T = 8.0 * PI;
const float U = 2.0 * PI;
const float RATIO = T / U;
const float dt = T / (RATIO * QUADRIC_SLICES);
const float du = U / QUADRIC_STACKS;
float v[4][3], n[4][3], c[4][2];
float sint, cost, sint2, cost2;
float sinu, cosu, sinu2, cosu2;
glBegin(GL_QUADS);
for (float t = 0; t < T; t += dt) {
sint = sinf(t);
cost = cosf(t);
sint2 = sinf(t + dt);
cost2 = cosf(t + dt);
c[0][0] = c[3][0] = RATIO * t / T;
c[1][0] = c[2][0] = RATIO * (t + dt) / T;
for (float u = 0; u < U; u += du) {
sinu = sinf(u);
cosu = cosf(u);
sinu2 = sinf(u + du);
cosu2 = cosf(u + du);
v[0][0] = cost * (3 + cosu);
v[0][1] = sint * (3 + cosu);
v[0][2] = size * t / T + sinu;
n[0][0] = v[0][0] - cost * 3;
n[0][1] = v[0][1] - sint * 3;
n[0][2] = v[0][2] - size * t / T;
v[1][0] = cost2 * (3 + cosu);
v[1][1] = sint2 * (3 + cosu);
v[1][2] = size * (t + dt) / T + sinu;
n[1][0] = v[1][0] - cost2 * 3;
n[1][1] = v[1][1] - sint2 * 3;
n[1][2] = v[1][2] - size * (t + dt) / T;
c[0][1] = c[1][1] = u / U;
v[2][0] = cost2 * (3 + cosu2);
v[2][1] = sint2 * (3 + cosu2);
v[2][2] = size * (t + dt) / T + sinu2;
n[2][0] = v[2][0] - cost2 * 3;
n[2][1] = v[2][1] - sint2 * 3;
n[2][2] = v[2][2] - size * (t + dt) / T;
v[3][0] = cost * (3 + cosu2);
v[3][1] = sint * (3 + cosu2);
v[3][2] = size * t / T + sinu2;
n[3][0] = v[3][0] - cost * 3;
n[3][1] = v[3][1] - sint * 3;
n[3][2] = v[3][2] - size * t / T;
c[2][1] = c[3][1] = (u + du) / U;
for (int i = 0; i < 4; i++) {
glTexCoord2fv(c[i]);
glNormal3fv(n[i]);
glVertex3fv(v[i]);
}
}
}
glEnd();
T = 8 PI
ponieważ obwód koła to 2PI
a mamy 4
zwoje więc 8 PI
.
U
- obwód drutu sprężyny 2PI
Nie rozumiem jednak tej pętli v- to są współrzędne , c to współrzędne tekstury a n - wektory normalne , za co one odpowiadają? Tak naprawdę gdy zakomentuje zarówno c i n to sprężyna ma ten sam kształt . V to 4 punkty które tworzą prostokąty?
I co robi ta pętla na końcu? Odpowiada za rysowanie punktów(vertexow) i ustawia te wektory normalne i wspolrzedne tekstury?
Proszę o pomoc w zrozumieniu.
Pozdrawiam