本篇介绍一下使用OpenGL绘制圆环体的方法。程序是在C#和OpenTK环境下编译的。

代码:

/// <summary>
/// 绘制圆环体
/// </summary>
/// <param name="Radius">圆环体半径</param>
/// <param name="TubeRadius">圆环体段半径</param>
/// <param name="Sides">圆环体段的侧面数</param>
/// <param name="Rings">圆环体段数</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;}}

转载于:https://www.cnblogs.com/xpvincent/archive/2013/02/16/2913544.html

使用OpenGL绘制圆环体(Torus)相关推荐

  1. [WebGL入门]二十,绘制立体模型(圆环体)

    注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指 ...

  2. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )

    文章目录 一.初始化 OpenGL 矩阵 1.设置投影矩阵 2.设置模型视图矩阵 二.绘制点 1.清除缓冲区 2.设置当前颜色值 3.设置绘制点的大小 4.绘制点 5.将缓冲区绘制到前台 三.部分代码 ...

  3. 深圳大学计算机图形学实验一——OpenGL绘制布布头像

    尝试利用OpenGL绘制一些可爱的表情包. 一二布布是较为流行的一套萌系表情包.我选择绘制一二布布系列的一张表情包.这张表情包描绘了趴在窗户上的一只小棕熊布布. 表情包印在手机壳的样例如下: 头的绘制 ...

  4. c语言 opengl画仪表盘源码,opengl绘制五星红旗

    本文实例为大家共享了opengl绘制五星红旗的详细代码,供大家参考,详细内容如下 主要仪器设备 VisualStudio C++2015 Windows 10环境 opengl库 操作步骤 1.五星红 ...

  5. 【Unity】动态生成圆环体Mesh

    代码由ChatGPT生成,后经人工调整. /// <summary> /// 创建一个3维圆环体Mesh. /// </summary> /// <param name= ...

  6. 如何用 OpenGL 绘制雪花?

    作者 | 许向武 责编 | 张红月 出品 | CSDN博客 看冬奥才知道,阿勒泰不但是中国的"雪都",还是"人类滑雪起源地".这个说法是否成立,姑且不论,阿勒泰 ...

  7. 动态绘制圆环和扇形的源代码

    动态绘制圆环和扇形的源代码可以调节各种相应的属性并且由你根据需要进行扩展. 源文件下载 转载于:https://www.cnblogs.com/vilyLei/articles/1394186.htm ...

  8. 【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )

    文章目录 一.绘制三角形 二.三角形绘制顺序 1.绘制正面 2.三个点逆时针方向排列 3.三个点顺时针方向排列 4.设置点的正面方向 三.绘制多个三角形 四.相关资源 一.绘制三角形 三角形绘制即绘制 ...

  9. 【OpenGL】十一、OpenGL 绘制多个点 ( 绘制单个点 | 绘制多个点 )

    文章目录 一.绘制单个点 二.绘制多个点 三.相关资源 在上一篇博客 [OpenGL]十.OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | ...

最新文章

  1. 别让低效努力,毁了你
  2. 【Ionic+AngularJS 开发】之『个人日常管理』App(二)
  3. cannot import name filter
  4. CSS Sprites图片拼合生成器实现思路
  5. Java Web学习计划
  6. springmvc二十四:自定义国际化信息
  7. ip地址管理与子网的划分二
  8. python构建二维数组_Python中创建二维数组
  9. CF-85E.Guard Towers(二分+染色)
  10. r23中文测试软件,Maxon公布最新的CINEBENCH R23测试软件
  11. 作者:熊赟,博士,复旦大学计算机科学技术学院副教授。
  12. SpringBoot 开启关闭自动任务配置(EnableScheduling )
  13. 录音整理文字工具otranscribe简介
  14. python笔记3:依次输入3个数排序打印(升序)
  15. 汇编工具MASM包下载
  16. 记录|斐讯K2拆机使用ttl刷入breed并刷入新固件
  17. mysql免安装_MySQL免安装版配置教程
  18. 自动化测试框架[Cypress测试实例凸显其优势]
  19. 阙值,阈值,阀值,傻傻分不清
  20. 语音计算机怎么切换音乐模式,如何把微信里收藏的语音音乐转换成mp3格式?

热门文章

  1. java jsp中的日历表_JAVA简单的日历程序
  2. 圈复杂度本质上就是——分支覆盖率达到100%需要的测试用例数
  3. python二维数组初始化
  4. centos7 php安装
  5. 学习vue的双向数据绑定的原理
  6. Apache端口设置多域名和转发请求(虚拟域名)
  7. JAVA基础——最简单的多重循环程序
  8. 关于使用python的open函数时报No Such File or DIr的错误
  9. HDU 3549 Flow Problem (dinic模版 isap模版)
  10. JS动态加载脚本及对动态脚本内方法的调用