赞 | 390 |
VIP | 0 |
好人卡 | 11 |
积分 | 379 |
经验 | 242285 |
最后登录 | 2024-5-6 |
在线时间 | 5430 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 37859
- 在线时间
- 5430 小时
- 注册时间
- 2006-11-10
- 帖子
- 6549
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 灯笼菜刀王 于 2022-2-27 23:57 编辑
我知道两点之间的距离公式 √((x1-x2)^2 + (y1-y2)^2
但是以该值作为宽度 m = Math.sqrt((x1 - x2).abs^2 + (y1 - y2).abs^2) 描绘线条却短很多很多....
而用 m = (x1-x2).abs + (y1-y2).abs 来作为宽度, 却会长很多
请问, 正确公式该怎么做呢?
x,y = 111,333 back = RPG::Sprite.new back.bitmap = Bitmap.new(640,480) back.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0)) a = RPG::Sprite.new b = RPG::Sprite.new c = RPG::Sprite.new bbb = Bitmap.new(10,10) bbb.fill_rect(0,0,10,10,Color.new(0,255,255)) a.bitmap = b.bitmap = bbb a.set_xy(320,240) b.set_xy(x,y) c.set_xy(320,240) #m = Math.sqrt((x - 320).abs^2 + (y - 240).abs^2) m = (x-320).abs + (y-240).abs c.bitmap = Bitmap.new(m,1) c.bitmap.fill_rect(0,0,m,1,Color.new(255,255,255)) d = Math.atan((240-y).abs.to_f/(320-x).abs) / Math::PI * 180 if x < 320 and y > 240 #第三象限 r = -180 elsif x < 320 and y < 240 #第一象限 r = 90 elsif x > 320 and y < 240 #第四象限 r = -90 else r = 0 end c.angle = d + r
x,y = 111,333
back = RPG::Sprite.new
back.bitmap = Bitmap.new(640,480)
back.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0))
a = RPG::Sprite.new
b = RPG::Sprite.new
c = RPG::Sprite.new
bbb = Bitmap.new(10,10)
bbb.fill_rect(0,0,10,10,Color.new(0,255,255))
a.bitmap = b.bitmap = bbb
a.set_xy(320,240)
b.set_xy(x,y)
c.set_xy(320,240)
#m = Math.sqrt((x - 320).abs^2 + (y - 240).abs^2)
m = (x-320).abs + (y-240).abs
c.bitmap = Bitmap.new(m,1)
c.bitmap.fill_rect(0,0,m,1,Color.new(255,255,255))
d = Math.atan((240-y).abs.to_f/(320-x).abs) / Math::PI * 180
if x < 320 and y > 240 #第三象限
r = -180
elsif x < 320 and y < 240 #第一象限
r = 90
elsif x > 320 and y < 240 #第四象限
r = -90
else
r = 0
end
c.angle = d + r
PS: 单纯两点之间画线从雷达图脚本里学到了,它用的是在直线距离上每一个点描绘, 然而我现在想要的是,两点之间连接一张图片, 图片的宽度 = 两点之间的距离, 所以那种方法没办法用~~~ |
|