![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图形学算法
文章平均质量分 89
入坑。。。。。。
别看着我笑了
这个作者很懒,什么都没留下…
展开
-
编程实现多边形的平移、比例(缩放)、旋转、对称和错切等二维仿射变换(大有门道)
这是计算机图形学基础的一个课后题,其实完全可以直接用OpenGL提供的几何变换的函数轻松的实现,但是毕竟学就要学明白,仔细写这个题一是为了回顾一下各种变换对应的变换矩阵和数学规律,二是加深一下对交互的使用,三是去体会OpenGL绘图时交换不同变换的顺序时会有什么变化(体会为什么有时候不能交换变换顺序)。首先声明一个十分鸡肋的概念:什么是二维仿射变换?仿射变换是一种二维坐标到二维坐标之间的线性变...原创 2020-04-13 23:36:16 · 9937 阅读 · 6 评论 -
对交互式绘制三次贝塞尔曲线的改进(二)——鼠标交互实现曲线的拼接
关于贝塞尔曲线在我的分类专栏的计算机图形学总结中有几篇文章分别给出了定义、递推公式、OpenGL贝塞尔曲线函数取实现贝塞尔曲线的绘制以及贝塞尔曲线的原理,至于交互式绘制三次贝塞尔曲线则是课后题,这次终于把这道课后题完整的实现了。课后题:交互式绘制三次贝塞尔曲线,要求可以实现曲线的拼接,并据此验证贝塞尔曲线的凸包性、端点等性质。贝塞尔曲线拼接的条件:首先肯定是连接处的坐标相等了,在程序中有...原创 2020-04-09 21:40:32 · 1571 阅读 · 0 评论 -
本想以等边三角形实现kock雪花曲线,却错误的画出与之完全不同的皇冠上的钻石,体会到了分形学的奥妙
首先来看kock曲线是如何生成的:(1)过程:主要分为三大步骤:第一步,给定一个初始图形(这里是线段);第二步,将这条线段中间的1/3从中点向外折起(夹角为60度);第三步,按照第二步的方法不断的把各段线段中间的1/3处向外折起。(2)新生成图形的坐标:假设原直线的首尾点是P0(x0,y0)和P1(x1,y1),那么新生成的图形的五个端点就是:(注意第三个端点的正负号表示中间两条新直线位...原创 2020-04-08 22:25:31 · 1168 阅读 · 2 评论 -
以等边三角形实现迭代次数在6次以内的kock雪花曲线并用键盘交互控制迭代次数
在https://blog.csdn.net/derbi123123/article/details/105397176中详细说明了kock曲线的原理并以直线段实现迭代次数在6次以内的kock曲线并用键盘交互控制迭代次数代码:功能:按a增加迭代次数,按d减少迭代次数。迭代六次(按六次a)效果:#include <GL/freeglut.h>#include <math...原创 2020-04-08 22:14:22 · 937 阅读 · 0 评论 -
以直线段实现迭代次数在6次以内的kock曲线并用键盘交互控制迭代次数
最近学图形学学到了分形学的一些相关概念和知识,恰好课后题中有一道题就是要去实现kock曲线的绘制,分形学的魅力太大了,自然界的很多东西都可以用分形学中迭代/递推的思想的绘制出来,而且只要找到规律/公式可以非常简单的编写程序去实现,很方便,也利于计算机提高效率。首先来看kock曲线是如何生成的:(1)过程:主要分为三大步骤:第一步,给定一个初始图形(这里是线段);第二步,将这条线段中间的1/3...原创 2020-04-08 21:31:40 · 810 阅读 · 1 评论 -
对交互式绘制三次贝塞尔曲线的改进(一)
之前做的https://blog.csdn.net/derbi123123/article/details/105345888这个交互式绘制三次贝塞尔曲线只能选中四个控制点之后再把控制图形画出来,由于昨天实现了连续折线的绘制,所以我们可以边选取控制点,边画控制图形和三次贝塞尔曲线了。右键点击可以清除上一次绘制,左键点击可以选择控制点,鼠标移动可以控制控制图形边的斜率。#include ...原创 2020-04-08 10:17:04 · 748 阅读 · 0 评论 -
交互式地绘制三次贝塞尔曲线(OpenGL中贝塞尔曲线函数实现)
在下面两篇文章中我分别用贝塞尔曲线的定义公式和递推公式实现了贝塞尔曲线的绘制https://editor.csdn.net/md/?articleId=105316199https://editor.csdn.net/md/?articleId=105317678这里我们使用OpenGL中贝塞尔曲线函数实现贝塞尔曲线的绘制,另外可以让用户自己通过鼠标选择四个控制点,画三次贝塞尔曲线。重要函...原创 2020-04-06 16:33:46 · 2182 阅读 · 4 评论 -
根据Bezier曲线的定义公式实现Bezier曲线的绘制
Bezier曲线的定义公式Pi是曲线上点的坐标(x,y,(z=0)), Bi,n(t)伯恩斯坦公式,绘制Bezier曲线的第一种方法是根据这个公式来绘制。首先看看绘制的效果:(1)计算定义中多项式的值首先要求伯恩斯坦公式的多项式的值Cni,写成后面这种阶乘的形式方便用程序去表达了://计算定义中多项式的值void GetCnk(GLint n,GLint *c)//n是控制点的个数...原创 2020-04-04 22:51:38 · 3496 阅读 · 0 评论 -
根据de Castel jau的递推算法实现Bezier曲线的绘制
de Castel jau的递推算法(1)原理(2)这么说很难看懂,举个例子结合理解:首先画出控制点:然后取两条曲线的1/3处的点并连线:p01 中1表示第一层,也就是第一次取等比例的点,0表示这一层的第0个点,其他同理再取连线上的1/3处的点:显然p02 已经是最后一个可以取等比例处的曲线的点了,所以曲线上t=1/3处的点就是p02 ,同理可以求t=1/2、1/4.。。...原创 2020-04-04 22:50:36 · 3289 阅读 · 0 评论 -
分形学——无穷放大的曼德布洛特集
先给出这篇文章的链接https://codebus.cn/yangw/post/zoomable-mandelbrot-set最近在学计算机图形学,学到kock曲线时无意中看到了这篇文章,更加深刻地体会了迭代在图形学中的无穷魅力,曼德布洛特集可以看下面的draw函数,理论上是可以无穷放大,但实际受 double 类型精度的影响,放大到一定程度就会是马赛克了。看看效果:代码:// 程序名称:...转载 2020-04-02 20:54:57 · 1430 阅读 · 0 评论