博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL根据极坐标参数方程绘制心形线、螺旋线等图形
阅读量:6952 次
发布时间:2019-06-27

本文共 1737 字,大约阅读时间需要 5 分钟。

本代码参考自《计算机图形学》第4版,根据极坐标参数方程绘制曲线:蜗形线、心形线、三叶曲线、四叶曲线、螺旋线共5种图形。

生成定点坐标的程序如下所示,该函数将需要绘制的顶点按顺序添加到入参verts的最后

typedef enum { LIMACON = 1,                 CARDIOID,                 THREELEAF,                 FOURLEAF,                 SPIRAL  } curveName; void GLApp::genVertices(std::vector
&verts, GLint curveNum, const GLint x0, const GLint y0){ const GLdouble twoPi = 6.283185; const GLint a = 175, b = 60; GLfloat r, theta, dtheta = 1.0 / float(a); glm::vec2 curvePt[2]; curvePt[0].x = x0; curvePt[0].y = y0; switch (curveNum) { case LIMACON: curvePt[0].x += a + b; break; case CARDIOID: curvePt[0].x += a + a; break; case THREELEAF: curvePt[0].x += a; break; case FOURLEAF: curvePt[0].x += a; break; case SPIRAL: break; default: break; } theta = dtheta; while (theta < twoPi) { switch (curveNum) { case LIMACON: r = a * cos(theta) + b; break; case CARDIOID: r = a * (1 + cos(theta)); break; case THREELEAF: r = a * cos(3 * theta); break; case FOURLEAF: r = a * cos(2 * theta); break; case SPIRAL: r = (a / 4.0) * theta; break; default: break; } curvePt[1].x = x0 + r * cos(theta); curvePt[1].y = y0 + r * sin(theta); verts.push_back(curvePt[0]); verts.push_back(curvePt[1]); curvePt[0].x = curvePt[1].x; curvePt[0].y = curvePt[1].y; theta += dtheta; }}

绘制时调用glDrawArrays(GL_LINES, 0, vert_num);

(vert_num等于verts.size())

 

转载于:https://www.cnblogs.com/paralysis/p/10774992.html

你可能感兴趣的文章
使用Istio分布式跟踪应用程序
查看>>
关于android中PendingIntent.getBroadcase的注册广播
查看>>
debian-nagios3.2,linux+apache+mysql+php
查看>>
判断登陆权限的操作,登录后调到之前所操作的地址。
查看>>
Linux升级python版本
查看>>
跟我一起数据挖掘(19)——什么是数据挖掘(2)
查看>>
行链接和行迁移案例
查看>>
删除指定路径下的文件以及文件夹
查看>>
yum仓库
查看>>
DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)
查看>>
VSCode 路径自动补全插件
查看>>
Windows下QQ聊天记录中图片的默认存放位置
查看>>
我的友情链接
查看>>
Red Hat Enterprise Linux 6 technology capabilities and limits
查看>>
Solr 5.3.0集成mmseg4j、tomcat部署、Solrj 5.3.0使用
查看>>
mysql事务的隔离级别
查看>>
DNS在什么情况下才能动态更新|活动目录集成的dns区域
查看>>
我的友情链接
查看>>
获取osc动弹中人员的用户名,并@他,so easy
查看>>
【坐在马桶上看算法】算法12:堆——神奇的优先队列(下)
查看>>