计算机图形学学习 直线生成算法

这是我学习的笔记吧···以前学习过,但是现在准备再次认真学习下。

1、直线生成算法

直线DDA算法(digital Differential Analyser)

<!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

 

1)设直线的起点为(x1,y1)中点为(x2,y2),斜率为M

    M=(Y2-Y1)/(X2-X1)=Dy/Dx

2)直线的每一点坐标都可以由前一点的坐标变化一个增量(Dx,Dy)而得到,如下<!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

      Xi+1 = Xi+Dx

      Yi+1 = Yi+Dy

3)比较DX与DY的大小,设置为较小的为STEP,例如(|DX|<|DY|)那么STEP=DX  

   计算单位像素下DY(如果|DX|>|DY|就是DX)的变化  DELTAL_DY=DY/STEP

然后从起点开始画线。

bresenham算法

比较重要看书吧····打字太麻烦了·= =

 

 

猜你喜欢

转载自s2003zy.iteye.com/blog/1903724