摘要:
#include "stdio.h" //用DDA法画直线,定义了直线始点(10,10*m+30)#include <graphics.h>main(){ float m;printf("the m is "); //输入直线的斜率mscanf("%f",&m);if(abs(m)<=1) {int x; float y; int driver=DETECT,mode; initgraph(&driver,&mode,"c:\WINLibTC"); y=10*m+30; f 阅读全文
摘要:
下面先简要介绍常用的画圆算法(Bresenham算法),然后再具体阐述笔者对该算法的改进。 一个圆,如果画出了圆上的某一点,那么可以利用对称性计算余下的七段圆弧:Plot(x,y),Plot(y,x),Plot(y,-x),Plot(x,-y),Plot(-x,-y),Plot(-y,-x),Plot(-y,x),Plot(-x,y)。 1、Bresenham 画圆算法。Bresenham算法的主要思想是:以坐标原点(0,0)为圆心的圆可以通过0度到45°的弧计算得到,即x从0增加到半径,然后利用对称性计算余下的七段圆弧。当x从0增加到时,y从R递减到。 设圆的半径为R,则圆的方程为 阅读全文
摘要:
原理:(摘自百度百科) Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换方法。 其原理是: 过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点的 顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近 的像素。 该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项 的符号,就可以确定该列所求的像素。以下为PASCAL程序实现program b_line;uses crt,graph;var GD,GM:INTEGER;procedure bresenham(x1,y1,x2,y2:integer);var i,dx,dy,e:integer; x 阅读全文