计算机图形学
文章平均质量分 97
不想继续脱发的猪头
这个作者很懒,什么都没留下…
展开
-
计算机图形学——多边形裁剪(待改良可运行)
用窗口的四条边的边界分别对所画多边形进行裁剪,每次裁剪后的结果都会生成一个新的多边形,再将这一多边形作为输入多边形再以裁剪窗口其他边界裁剪,最终达到裁剪多边形的目的。上述多边形裁剪对于凸多边形适用,但对于部分凹多边形会出现错误如下图,向外凹陷地位置裁剪结果包含了一条本不应该有的线,对于该问题由于时间问题,还没有完成,但已经形成一定可行的改进思路。首先还是要先求出多边形与裁剪区域的交点,同时类似于梁友栋算法的入边出边,把交点分成进入点和出点,然后将交点和原来的顶点按照多边形的顺序存储到同一个数组里,同原创 2020-07-07 10:34:26 · 1241 阅读 · 1 评论 -
计算机图形学——直线裁剪算法(Cohen,中点分割,梁友栋)
在裁剪之前要先判断该线段的属性,完全在裁剪窗口内,完全在窗口外还是部分在,部分在又有几个交点。常用的裁剪有以下三种算法: 1. Cohen算法:对各个区域进行编码,通过编码后的值来判断直线段是否在窗口内对于完全在窗口内的线段简取,对于完全在窗外的线段简弃,对于其他情况求出交点重复判断是否简取是否简弃。private void CohenCut1(Point firstpoint, Point secondpoint, Point[] rect) { ...原创 2020-07-07 10:15:02 · 4884 阅读 · 4 评论 -
计算机图形学Bresenham画线法——直线,中心椭圆,圆
该算法可以说是前两种的升级版,它不仅有一个高效的算法效率,它的适用范围也更广,可以用来画曲线等等。该算法的思想是通过各行、各列像素中心构造一组虚拟网格线,按照直线起点到终点的顺序,计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列象素中与此交点最近的象素。同样还是每次x=x+1误差项d初始值为0,d=d+k 若d>=1就将其减去1保证d在0到1之间d>0.5时y=y+1;d<0.5时,y不变。改进e=d-0.5就可以判断e是否大于0 就可以了因为每次要加k=dy/dx,用e*2*d原创 2020-07-05 08:51:04 · 1271 阅读 · 0 评论 -
计算机图形学中点画线法
中点画线法在DDA算法中已经将乘法运算改进到了加法运算,但加法运算的时候进行的都是浮点类型的运算,运算结束后还要进行取证处理。中点画线算法就是将浮点类型的运算改进成为整数的运算。该算法采用的是直线的一般式方程。还是以一种特殊情况为例,0<k<1每次在x方向上移动1个像素,y方向上移动一个或者不移动。所以可以通过判断下一个点与y+1和y的距离大小来决定y是否加1。可以通过判断下一个点的终点坐标也就是(x+1,y+0.5)到底是在直线的上方还是下方。该直线将平面分为三部分直线上方,在直线上,在直线原创 2020-07-04 20:58:13 · 2225 阅读 · 1 评论