日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

使用OpenGL绘制圆环体(Torus)

發(fā)布時間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 使用OpenGL绘制圆环体(Torus) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇介紹一下使用OpenGL繪制圓環(huán)體的方法。程序是在C#和OpenTK環(huán)境下編譯的。

代碼:

/// <summary>
/// 繪制圓環(huán)體
/// </summary>
/// <param name="Radius">圓環(huán)體半徑</param>
/// <param name="TubeRadius">圓環(huán)體段半徑</param>
/// <param name="Sides">圓環(huán)體段的側(cè)面數(shù)</param>
/// <param name="Rings">圓環(huán)體段數(shù)</param>
void DrawTorus(double Radius = 50, double TubeRadius= 10, int Sides = 20, int Rings = 30)
{
    double sideDelta = 2.0 * Math.PI / Sides;
    double ringDelta = 2.0 * Math.PI / Rings;
    double theta = 0;
    double cosTheta = 1.0;
    double sinTheta = 0.0;

    double phi, sinPhi, cosPhi;
    double dist;

    GL.Color3(1.00f, 0.0f, 0.0f);

    for (int i = 0; i < Rings; i++)
    {
        double theta1 = theta + ringDelta;
        double cosTheta1 = Math.Cos(theta1);
        double sinTheta1 = Math.Sin(theta1);
        
        GL.Begin(BeginMode.QuadStrip);
        phi = 0;
        for (int j = 0; j <= Sides; j++)
        {
            phi = phi + sideDelta;
            cosPhi = Math.Cos(phi);
            sinPhi = Math.Sin(phi);
            dist = Radius + (TubeRadius * cosPhi);

            GL.Normal3(cosTheta * cosPhi, sinTheta * cosPhi, sinPhi);
            GL.Vertex3(cosTheta * dist, sinTheta * dist, TubeRadius * sinPhi);

            GL.Normal3(cosTheta1 * cosPhi, sinTheta1 * cosPhi, sinPhi);
            GL.Vertex3(cosTheta1 * dist, sinTheta1 * dist, TubeRadius * sinPhi);
        }
        GL.End();
        theta = theta1;
        cosTheta = cosTheta1;
        sinTheta = sinTheta1;

    }


}

總結(jié)

以上是生活随笔為你收集整理的使用OpenGL绘制圆环体(Torus)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。