请教屏幕任意两点间直线的画法?

xingforever 2003-06-08 07:12:24
环境winxp+masm5
屏幕320*200
我的想法是先算出斜率,然后遍历x范围(x1,x2),逐个算出y。没能实现。
请教是否有更好的办法,请给一两行主要代码。
...全文
33 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingforever 2003-06-09
  • 打赏
  • 举报
回复
我当然没学过了,务请不吝赐教BRESENHAM算法。求知心切!
xingforever 2003-06-09
  • 打赏
  • 举报
回复
我终于找到一本《计算机图形学》的ebook,找到了那个BRESENHAM算法,c写的。
衷心感谢以上各位 I really appreciate!
蚊子王 2003-06-09
  • 打赏
  • 举报
回复
用斜率,来乘除效率很低的。
学过图形学没有,建议用楼上推荐的BRESENHAM直线,
dunkel 2003-06-09
  • 打赏
  • 举报
回复
到学校图书馆借本图形学的书, 那上面会有这个算法的详解的.
xingforever 2003-06-09
  • 打赏
  • 举报
回复
啊 我出不了国啊 没关系 我回去拨号
Areslee 2003-06-09
  • 打赏
  • 举报
回复
在GOOGLE中以BRESENHAM作关键字搜,有一篇不错的。就在最前面几个网页中的
wabcde 2003-06-08
  • 打赏
  • 举报
回复
用Bresenham算法
xingforever 2003-06-08
  • 打赏
  • 举报
回复
说的对。我学汇编不过几天,想得到写不出来,还请赐教代码
dunkel 2003-06-08
  • 打赏
  • 举报
回复
你这个宏肯定不对了, 因为无论是 div bx 还是 mul cx 都会去改变 ax 和 dx 的内容, 但从上面的指令来看, 并没有考虑这一点. 另外, 先求斜率, 后再计算目标点, 用的都是整型值, 会出较大的误差的, 要么用浮点, 要么在计算目标点时先乘再除: y=((y2-y1)*(x-x1))/(x2-x1)+y1, 不过还是没有考虑四舍五入, 可能还是用浮点好些. 还有, 就是没有考虑斜率为0这样特殊的情况.
xingforever 2003-06-08
  • 打赏
  • 举报
回复
我自己写的宏
linexy macro x1,y1,x2,y2 ;x1<x2
mov cx,x1
mov dx,y1
mov ax,x2
mov bx,y2
sub bx,dx
sub ax,cx
div bx

loop1: inc cx
push ax
mul cx
point cx,dx
pop ax
cmp cx,x2
jnz loop1
endm

那个div我搞不大清楚,所以我也不知道算出来的y放到哪了? 还有就是突破不了x1<x2的限制
dunkel 2003-06-08
  • 打赏
  • 举报
回复
masm5 如何 GetDC 呢 ?

按照楼主的思路应该可以绘制出直线的啊, 将代码贴出来看看 ?
Tiangua 2003-06-08
  • 打赏
  • 举报
回复
invoke GetDC,NULL
再调用lineto就可以了

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧