设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2376|回复: 3
打印 上一主题 下一主题

set_pixel画直线(请无视)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
跳转到指定楼层
1
发表于 2007-4-25 19:17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  这不是教程,也不是心得体会,仅仅是怕我电脑死掉而写的遗嘱.
------------------------------------------------------------------------
画直线就要去循环线上的点,但实际问题是----描点函数的参数有2个,你循环就要2个参数一起循环,如果循环到x终止循环,y还要继续循环的时候,程序就很麻烦了.所以,我写下一下的纪录.为2点法画直线做纪录的图形分割法


设置2点坐标,直接连接直线
sx=起点x;sy=起点y;ex=终点x;ey=重点y#假如以上数据可以输入
s=Sprite.new
s.bit=Bitmap.new(600,800)
#逐渐描绘线上的点
s.bit.set_piexl(x,y,color)#颜色参数假定已知
----------------------------------------------------------------------------------------
算法:
1,判断起点到中点两条线(sx到ex和sy到ey的比较),比较的目的在于以后while函数调用的时候可以按条件让一个数中止变化

a=(sx-ex).abs
b=(sy-ey).abs#同时循环2个函数比较麻烦,可以按照先循环相同部分,然后循环多余部分的函数
比如以上的比较,就取a-b的绝对值((a-b).abs)

先用while循环描绘公共部分,因为这里x==y,所以可以只设置一个数值
    x==y
    x=sx#设置起点
    while x<e#在终点前循环
    s.bit.set_piexl(x,y,color)
    x+=1
    end
然后根据a,b的比较,再次循环描绘多余的部分,那么其中一个参数就又固定了

这算法有误差----那个x如何增加,虽然有其公共部分,但肯定不是整数.但是,已经精确到了pixel点,误差应该很小了


Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
2
 楼主| 发表于 2007-4-25 19:17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  这不是教程,也不是心得体会,仅仅是怕我电脑死掉而写的遗嘱.
------------------------------------------------------------------------
画直线就要去循环线上的点,但实际问题是----描点函数的参数有2个,你循环就要2个参数一起循环,如果循环到x终止循环,y还要继续循环的时候,程序就很麻烦了.所以,我写下一下的纪录.为2点法画直线做纪录的图形分割法


设置2点坐标,直接连接直线
sx=起点x;sy=起点y;ex=终点x;ey=重点y#假如以上数据可以输入
s=Sprite.new
s.bit=Bitmap.new(600,800)
#逐渐描绘线上的点
s.bit.set_piexl(x,y,color)#颜色参数假定已知
----------------------------------------------------------------------------------------
算法:
1,判断起点到中点两条线(sx到ex和sy到ey的比较),比较的目的在于以后while函数调用的时候可以按条件让一个数中止变化

a=(sx-ex).abs
b=(sy-ey).abs#同时循环2个函数比较麻烦,可以按照先循环相同部分,然后循环多余部分的函数
比如以上的比较,就取a-b的绝对值((a-b).abs)

先用while循环描绘公共部分,因为这里x==y,所以可以只设置一个数值
    x==y
    x=sx#设置起点
    while x<e#在终点前循环
    s.bit.set_piexl(x,y,color)
    x+=1
    end
然后根据a,b的比较,再次循环描绘多余的部分,那么其中一个参数就又固定了

这算法有误差----那个x如何增加,虽然有其公共部分,但肯定不是整数.但是,已经精确到了pixel点,误差应该很小了


Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
3
 楼主| 发表于 2007-4-25 22:51:47 | 只看该作者
以下引用sizz123于2007-4-25 11:17:55的发言:

这不是教程,也不是心得体会,仅仅是怕我电脑死掉而写的遗嘱.
------------------------------------------------------------------------
画直线就要去循环线上的点,但实际问题是----描点函数的参数有2个,你循环就要2个参数一起循环,如果循环到x终止循环,y还要继续循环的时候,程序就很麻烦了.所以,我写下一下的纪录.为2点法画直线做纪录的图形分割法
(一般计算直线都是根据钩股定理,做个直角三角形)


设置2点坐标,直接连接直线
sx=起点x;sy=起点y;ex=终点x;ey=重点y#假如以上数据可以输入
s=Sprite.new
s.bit=Bitmap.new(600,800)
#逐渐描绘线上的点
s.bit.set_piexl(x,y,color)#颜色参数假定已知
----------------------------------------------------------------------------------------
算法:
1,判断起点到中点两条线(sx到ex和sy到ey的比较),比较的目的在于以后while函数调用的时候可以按条件让一个数中止变化

a=(sx-ex).abs
b=(sy-ey).abs#同时循环2个函数比较麻烦,可以按照先循环相同部分,然后循环多余部分的函数
比如以上的比较,就取a-b的绝对值((a-b).abs)

先用while循环描绘公共部分,因为这里x==y,所以可以只设置一个数值
   x==y
   x=sx#设置起点
   while x<e#在终点前循环
   s.bit.set_piexl(x,y,color)
   x+=1
   end
然后根据a,b的比较,再次循环描绘多余的部分,那么其中一个参数就又固定了

这算法有误差----那个x如何增加,虽然有其公共部分,但肯定不是整数.但是,已经精确到了pixel点,误差应该很小了





[本贴由作者于 2007-4-25 14:43:48 最后编辑]

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

苹果梨

梦石
0
星屑
43
在线时间
6 小时
注册时间
2007-2-14
帖子
720
4
发表于 2007-4-25 23:46:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 13:06

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表