
图形学
不想秃头爱敲码的小姐姐
为脱发做出巨大贡献的不脱发小姐姐
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图形学--中点画圆法--opengl中实现
基本原理: 圆外的点F(x,y)>0;圆内的点F(x,y)<0;算法:d0=1.25-r;d<=0,d=d+2x+3;d>0,d=d+2(x-y)+5;改进: 去掉浮点数的比较,由于x每次增1,所有不会存在0.25浮点数,所以可以直接是d0=1-r;d<=0,d=d+2x+3;d>0,d=d+2(x-y)+5;推导过程: 图如上代码:...原创 2020-03-22 17:52:08 · 1084 阅读 · 0 评论 -
图形学--Bresenham画圆--opengl中实现
画圆思想: 圆的绘制是通过圆弧段来绘制,然后通过对称性进行画出其他部分。Brensenham算法:d0=3-2r;d<0,yi=yi-1,d=d+4x+6;d>=0,yi-1=yi - 1,d=d+4*(x-y)+10;推导过程: 图如上,个人感觉推导过程很清晰。代码#include <GL/glut.h> #include<math.h&...原创 2020-03-22 17:41:03 · 1132 阅读 · 0 评论 -
图形学--Bresenham改进算法--opengl中实现
基本思想: 通过直线与y的交点与0.5(即中点)比较,从而判断取上方点还是下方点。如下图:d<0.5,取直线下方点pd(xi+1,yi);d>=0.5,取直线上方点pu(xi+1,yi+1);推导过程:由y=kx+b得,每次增加k;d的初值:d0=0;d的变换及如何取点:d=d+k;Xi+1=Xi + 1;d>0.5,yi+1=yi + 1...原创 2020-03-22 14:27:04 · 454 阅读 · 0 评论 -
图形学---中点画线法---opengl中实现
目的: 为了优化DDA算法中的浮点数运算(DDA中每次+k运算,|k|<1,所以存在浮点数运算),达到整数运算,提高效率。 基本思想:当前像素点为(xp,yp),下一像素点为P1或P2。设P1与P2的中点为M(Xp+1,Yp+0.5),图中直线为理想直线。由数学知识得,直线的一般式为F(x,y)=aX+bY+c=0;若一个点在直线上方,则F(x,y)>0;若一个点在直线下...原创 2020-03-17 17:55:57 · 3242 阅读 · 2 评论 -
图形学——DDA算法--opengl方法实现
基本思想:已知过端点P0(x0,y0),P1(x1,y1)的直线段L:y=kx+b;斜率为K=(y1-y0)/(x1-x0);从x=x0开始,步长=1(个像素),计算相应的坐标y=kx+b;取像素点(x,round(y))作为当前点的坐标。(round()为取整函数)推导过程:Yi+1=kXi+1+b=k(Xi + 1)+b=kXi+b+k;即,x每递增1,y递增k。例如:画线段P0(...原创 2020-03-17 17:01:40 · 627 阅读 · 1 评论