算法原理
把圆进行N等分,即可看作N段相邻的直线,利用N段相邻的直线逼近圆。
代码展示
#include<iostream>
#include<graphics.h>
#include <conio.h>
using namespace std;
#define X 500
#define Y 500
void DDA(int x0,int y0,int x1,int y1){
int dx,dy;
dx = x1 - x0;
dy = y1 - y0;
double k;
k = 1.0 * dy / dx;
// 针对稀疏问题
if (abs(k) <= 1) {
if (x0 > x1) {
int t = x0;
int t1 = y0;
x0 = x1;
y0 = y1;
x1 = t;
y1 = t1;
}
for (double x = x0,y = y0; x < x1; x++) {
putpixel(X + x, round(Y - y), WHITE);
y += k;
}
}
else {
if (y0 > y1) {
int t = x0;
int t1 = y0;
x0 = x1;
y0 = y1;
x1 = t;
y1 = t1;
}
for (double x = x0, y = y0; y < y1; y++) {
putpixel