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

Project1

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

[已经解决] 两点之间的距离问题

[复制链接]

Lv5.捕梦者

梦石
0
星屑
37859
在线时间
5430 小时
注册时间
2006-11-10
帖子
6549
跳转到指定楼层
1
发表于 2022-2-27 23:50:28 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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 来作为宽度, 却会长很多


请问, 正确公式该怎么做呢?

RUBY 代码复制
  1. x,y = 111,333
  2. back = RPG::Sprite.new
  3.   back.bitmap = Bitmap.new(640,480)
  4. back.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0))
  5.   a = RPG::Sprite.new
  6.   b = RPG::Sprite.new
  7.   c = RPG::Sprite.new
  8.   bbb = Bitmap.new(10,10)
  9.   bbb.fill_rect(0,0,10,10,Color.new(0,255,255))
  10.   a.bitmap = b.bitmap = bbb
  11.   a.set_xy(320,240)
  12.   b.set_xy(x,y)
  13.   c.set_xy(320,240)
  14.   #m = Math.sqrt((x - 320).abs^2 + (y - 240).abs^2)
  15.   m = (x-320).abs + (y-240).abs
  16.   c.bitmap = Bitmap.new(m,1)
  17.   c.bitmap.fill_rect(0,0,m,1,Color.new(255,255,255))
  18.   d = Math.atan((240-y).abs.to_f/(320-x).abs) / Math::PI * 180
  19.   if x < 320 and y > 240 #第三象限
  20.     r = -180
  21.   elsif x < 320 and y < 240 #第一象限
  22.     r = 90
  23.   elsif x > 320 and y < 240 #第四象限
  24.     r = -90
  25.   else
  26.     r = 0
  27.   end
  28.   c.angle = d + r


PS: 单纯两点之间画线从雷达图脚本里学到了,它用的是在直线距离上每一个点描绘, 然而我现在想要的是,两点之间连接一张图片, 图片的宽度 = 两点之间的距离, 所以那种方法没办法用~~~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-5-6 10:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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