2017-01-13 81 views
1

我有两个x,y对在边界框内创建一条直线。计算边界框中的交点

coord2 = -30, 300

边框是x0x500y0y400 enter image description here

我想其中线相交的边界创建一个对象,它可以告诉我的坐标框。

Intercept.new(bounding_box, coord1, coord2).call!返回拦截点[x,y]

我相信我需要使用y = mx + b,但我有麻烦书面方式的对象,可以采取这两个坐标因素边框,并告诉我在哪里交点发生。任何人都可以拍摄并帮我在这里?

编辑不是评论中链接问题的重复。这个问题有一个常数,B点总是在矩形的中心。

+0

如果一条直线与'方块'相交,则会有两个交点,不是?另外为什么你的Y轴倒置? –

+1

@ sagarpandya82它倒过来了,因为它是如何使用图像程序使用'x,y'。它并不影响'y = mx + b'的工作方式。 线条是有限的,只与边界框的一部分相交。 – theartofbeing

+0

你有什么尝试?你是否用https://github.com/DanielVartanov/ruby-geometry做了什么,或者你只是要求我们为你编码? – OneNeptune

回答

1

你正处于利用y = mx + b概念的正确轨道上,并且需要一些进一步的线性代数来完全解决问题。然而,你说你只是在寻找从哪里开始接近这个特定问题的方向。

似乎有人在发展与您的斗争相关的游戏时遇到了与弹丸交叉点相似的问题。这是他的博客文章:http://factore.ca/blog/166-how-to-calculate-the-point-of-intersection-between-a-line-and-a-bounding-box

下面是他的红宝石具体解决他的问题的链接:https://github.com/adriand/intercept-calculator/blob/master/intercept_math.rb

希望这有助于!

+0

哇,这正是我所需要的。 +10在红宝石。谢谢! – theartofbeing