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

Project1

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

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

[复制链接]

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
跳转到指定楼层
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: 单纯两点之间画线从雷达图脚本里学到了,它用的是在直线距离上每一个点描绘, 然而我现在想要的是,两点之间连接一张图片, 图片的宽度 = 两点之间的距离, 所以那种方法没办法用~~~

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
2
发表于 2022-2-28 00:35:17 | 只看该作者
相似三角形?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2227
在线时间
1102 小时
注册时间
2006-1-10
帖子
800
3
发表于 2022-2-28 01:10:06 | 只看该作者
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.   aaa = Bitmap.new(10,10)
  9.   aaa.fill_rect(0,0,10,10,Color.new(255,0,255))
  10.   bbb = Bitmap.new(10,10)
  11.   bbb.fill_rect(0,0,10,10,Color.new(0,255,255))
  12.   a.bitmap = aaa
  13.   b.bitmap = bbb
  14.   a.x = 320
  15.   a.y = 240
  16.   b.x = x
  17.   b.y = y
  18.   c.x = 320
  19.   c.y = 240
  20.   m = Math.sqrt((x - 320)**2 + (y - 240)**2)
  21.   c.bitmap = Bitmap.new(m,1)
  22.   c.bitmap.fill_rect(0,0,m,1,Color.new(255,255,255))
  23.   d = Math.atan2( (240 - y), (x - 320)) / Math::PI * 180
  24.   c.angle = d


评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
灯笼菜刀王 + 1 原来如此

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23191
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

4
发表于 2022-2-28 01:29:42 | 只看该作者
因为ruby的^不是c#的^
请直接用Math.hypot(deltax, deltay) 不要自己编奇怪的表达式……

评分

参与人数 2星屑 +50 +1 收起 理由
RyanBern + 50 认可答案
灯笼菜刀王 + 1 懂了, 原来有可以直接用的函数.

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2022-2-28 01:31:44 | 只看该作者
^ 在 ruby 中不是乘方,** 才是。
^ 是按位亦或。

可能是 matlab 敲习惯了(x)

点评

还有Julia  发表于 2022-2-28 08:59
^真的能表示乘方的,好像也就古代的vb c# pascal等几个不按套路出牌的语言和现代的matlab吧  发表于 2022-2-28 07:31

评分

参与人数 1+1 收起 理由
灯笼菜刀王 + 1 确实是, 一直没想到是符号问题....

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

6
发表于 2022-2-28 01:54:52 | 只看该作者
罚酒三杯

评分

参与人数 1+1 收起 理由
灯笼菜刀王 + 1 该罚,浪费了好几个小时...

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2966
在线时间
334 小时
注册时间
2020-6-14
帖子
89

极短22参与

7
发表于 2022-2-28 11:39:46 | 只看该作者
power是相对复杂一点的函数,不同语言往往会用不同的运算符实现。这种确实直接调现成的好一点
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
8
发表于 2022-2-28 15:22:01 | 只看该作者
本帖最后由 RPGzh500223 于 2022-2-28 15:38 编辑

其实 Math.atan2可以直接算出角度,不用像Math.atan那样分象限讨论 ……楼上已经写出来了
我好奇你PS的内容,可否做张示意图

点评

图片拉伸就是了  发表于 2022-3-1 17:43
你提到的2个,我上网查了下…… 闪电效果一查好难,看不懂的数学和英文……  发表于 2022-3-1 17:18
要做像磁暴步兵, 萨满闪电链那样的效果=.=  发表于 2022-2-28 16:09
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 23:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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