GLUTを使用せずに、OpenGLでトーラスをレンダリングする必要があります。C#とTaoFrameworkのバインディングを使用しています。ここから取得した次のコードがあります。
private void DrawTorus() {
int numc = 100, numt = 100;
double TWOPI = 2 * Math.PI;
for (int i = 0; i < numc; i++) {
Gl.glBegin(Gl.GL_QUAD_STRIP);
for (int j = 0; j <= numt; j++) {
for (int k = 1; k >= 0; k--) {
double s = (i + k) % numc + 0.5;
double t = j % numt;
double x = (1 + 0.1 * Math.Cos(s * TWOPI / numc)) * Math.Cos(t * TWOPI / numt);
double y = (1 + 0.1 * Math.Cos(s * TWOPI / numc)) * Math.Sin(t * TWOPI / numt);
double z = 0.1 * Math.Sin(s * TWOPI / numc);
Gl.glVertex3d(2 * x, 2 * y, 2 * z);
}
}
Gl.glEnd();
}
}
このコードはトーラスを描画しますが、テクスチャを配置する必要があります。これらの式をテクスチャ座標に使用しようとしていますが、Rとr(それぞれ内側と外側の半径)に何を使用するかがわかりません。
v = arccos (Y/R)/2pi
u = [arccos ((X/(R + r*cos(2pi * v))] * 2pi
そのコードを理解するのに少し苦労しているので、私はそれの説明またはおそらくコメント付きの代替のより直感的なコードをいただければ幸いです。どんな助けでも大歓迎です。