点斜式算法

上传人:知*** 文档编号:595807247 上传时间:2024-12-10 格式:DOC 页数:2 大小:60.50KB
返回 下载 相关 举报
点斜式算法_第1页
第1页 / 共2页
点斜式算法_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《点斜式算法》由会员分享,可在线阅读,更多相关《点斜式算法(2页珍藏版)》请在金锄头文库上搜索。

1、点斜式算法点斜式算法是计算机图形学中一种基于直线的点斜式方程来生成直线的方法算法思想直线的点斜式方程y-y1=k(x-x1);设直线通过P1(x1,y1),Pn(xn,yn),则斜率k=y/x=(yn-y1)/(xn-x1)。如果已知第 i 点的坐标,可用步长stepx和stepy得到i+1点坐标xi+1=xi+stepxyi+1=yi+stepy或yi+1=yi+k*stepx如果stepx=1,stepy=k。算法具体实现:在0k1的情况下,我们x每次增加1,相应的y每次增加k,如果y1+ky1+0.5,则y2=y1+1,否则y2=y1;将y1再增加k,如果y1+2*ky2+0.5,则y3

2、=y2+1,否则y3=y2;如此反复比较直到终点yn。由于都是比较运算,为了方便计算,我们可以将k扩大2*x倍,进行比较运算。算法描述#include stdafx.h#include iostream#include graphics.h#include stdlib.h#include stdio.h#include conio.h#include dos.husing namespace std;void line(int x1,int y1,int xn,int yn,int color)int x,y,dx,dy,t;dx=xn-x1;dy=yn-y1;if(abs(dx)=abs(

3、dy)if(dy0) /0k1下情况for(x=x1,y=y1,t=1;x2*dx*y+dx)y=y+1;putpixel(x,y,color);else /-1k0下情况for(x=x1,y=y1,t=1;x=xn;x+,t+)if(2*dx*y1+2*t*dy0) /k1下情况for(x=x1,y=y1,t=1;y2*dy*x+dy)x=x+1;putpixel(x,y,color);else /k-1下情况for(x=x1,y=y1,t=1;y=yn;y+,t+)if(2*dy*x1+2*t*dx2*dy*x-dy)x=x-1;putpixel(x,y,color);int main() initgraph(1024,768); /启动图形库 line(0,0,480,480,BLUE); /画直线 getchar(); closegraph(); /关闭图形库 return 0;在VS2012编译下通过执行,效果如下:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号