计算机图形学:直线的光栅化
发布时间
阅读量:
阅读量
屏幕由许多像素点构成。任何图形在屏幕上显示前都需要进行光栅化处理。像素的基本单位是1,并且必须是整数。因此,在直线上只能选取X或Y轴方向上每次步进1的最近整数点。具体选择X轴还是Y轴取决于哪一维跨度更大。以下模拟几种直线的光栅化算法,为了方便假设x₂ > x₁ > 0,y₂ > y₁ > 0,并且斜率位于-1至+1之间(注意:这里使用的是闭区间)。win32编程中窗口的XY轴正方向分别向右向下与平常的坐标系不太一样这里以Windows窗口坐标为准画直线的时候端点也有可能出现浮点数所以输入点都使用float类型在测试下面代码之前首先创建一个Windows桌面应用程序
直接基于公式进行计算
void DrawLine_1(HDC hdc, float x1, float y1, float x2, float y2)
{
//转为斜截式,y=k*x+b,分求出k和b
float dx = x2 - x1;
float dy = y2 - y1;
float k = dy / dx;
float b = y1 - k * x1;
int num = dx;//获取点的个数
int x = round(x1);
全部评论 (0)
还没有任何评论哟~
