【计算机图形学】DDA(数字微分分析仪)绘制线条

本文介绍了DDA(数字微分分析法)算法,这是一种用于线段扫描转换的方法。核心思想是在一轴上按单位间隔采样,以确定另一轴上的接近线段路径的坐标。文中提供了一个使用C++实现的DDA算法代码示例,该示例中使用了作者自定义的OpenGL封装类库,但实际应用时可以直接使用OpenGL API。
摘要由CSDN通过智能技术生成

DDA(digital differential analyzer,数字微分分析法)是一种线段扫描转换算法。它的主要算法原理是:

在一个坐标轴上以单位间隔对线段取样,从而在另一坐标轴上确定最靠近线条路径的对应坐标值。

下面是DDA算法的C++代码(里面的Window、Application等对象,是我自己用OpenGL封装的类库,仅仅是为了简便与学习,可以直接使用OpenGL代替)

#include <iostream>
#include <conio.h>
using namespace std;
#include "Application.h"

int handle(const float a) {
	return int(a+0.5);
}

void drawPoint(Window& window, int x, int y){
	Point *point = new Point(x, y,Color(255,255,255));
	window.add((Object*)point);
}

/*
window是用于绘图的窗口
(x0,y0)是起始坐标,(x1,y1)是终点坐标
*/
void lineDDA(Window& window, int x0, int y0, int x1, int y1) {
	int dx = x1 - x0, dy = y1 - y0;	//dx为两点横坐标之差,dy为两点纵坐标之差
	float xIncrement, yIncrement;	//
	float x = x0, y = y0;			//将坐标的类型转换为浮点类型
	int length = 0;					//记录选定坐标轴对应边的长度(dx或dy)
	//判断斜率大小
	if (fabs(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值