问题标签 [line-intersection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 画线+该线与自身的交点,并检测该画线内的CCSprites
我正在使用以下代码画线,效果非常好,
http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/
现在我想......
1> 检测线是否与自身相交。2) 检测 CCSprite 是否在该闭合线内。
在搜索时,我遇到了 LineIntersection 的许多逻辑,但没有一个是准确的。我给了其中一个检测交叉点的方法,但是当没有线的交叉点时它也会检测到它。
第一种方法
/li>
这就是我调用此方法的方式,我已将我的点存储在来自 pangesture 识别器方法的 arrLinePoints 中
即使在以下情况下,这也给了我真实的
我还通过将视图添加到 CCDirector 的视图中尝试了使用不同方法的相同功能
但这带来了性能问题,我的 fps 降低到几乎 3 到 6。而且那个交叉点问题仍然存在。
相交的完美情况是
请尽快提供帮助!感谢大家的支持。
math - 如何找到两条三次贝塞尔曲线之间的交点
我有两条三次贝塞尔曲线,
曲线1:- 第一个锚点(a1x,a1y),第一个控制点(c1x,c1y),第二个控制点(c2x,c2y),第二个锚点(a2x,a2y)
曲线2:- 第一个锚点(a3x,a3y),第一个控制点(c2x,c3y),第二个控制点(c4x,c4y),第二个锚点(a4x,a4y)
现在我想找到这两条贝塞尔曲线之间的交点;
怎么做?任何带有算法的参考文档都会对我有所帮助;
javascript - Javascript方法在给定三个点和斜率的情况下找到两条线的交点
我搜索了这个并找到了类似的答案,但它们更多地基于数学而不是基于编程,我需要一些帮助来将其放入代码中。
我有一个任意形状,但我们暂时称它为菱形,坐标如下:
A = (0,0)
B = (50, 50)
C = (0, 100)
D = (-50, 50)
想一想这方面的运动约束,就好像你有一根橡皮筋并移动了一个钉子。这些线将始终连接,但它们彼此的方向不得改变。因此,由于 AB 的斜率为 1,它需要保持为 1。我的那部分工作正常。
现在,假设我移动“B”,使其停留在 (100, 100)。我知道 AB(不变)、BC(在 B 被移动之前和之后,但之后是无用和错误的)、CD(不变)和 DA(不变)的斜率。我也知道 A、B 和 D 的坐标。我需要找到 C 的位置,以使所有斜率保持不变,并且它位于 BC 和 CD 应该相交的逻辑点。
从数学上讲,我现在知道 C 属于 (50, 150),但我需要一个通用公式来解决这个问题。这是一个单独的例子,所以我正在寻找的是足够通用的东西,可以重用。当然,当线条平行或垂直时会有障碍,但我可以处理。
这张图片应该有助于将其可视化。B 从“B”开始,我将其移至“B2”。C 需要移动到 ???
如果你能帮忙的话,非常感谢!
编辑:这似乎是答案,但我不是一个数学高手,不明白它是如何转化为某种通用公式的。 你如何检测两条线段相交的位置?
javascript - 在给定恒定斜率和变化坐标的情况下找到两条线的交点
我之前问过这个问题,但没有表达清楚,所以请原谅我的重复。这应该更好。
给定三个其他坐标和 2 个斜率,我需要计算一个坐标的位置。基本上是两条线的交点。但是,我没有通常可用于解决此问题的所有信息。
我有一个由一堆顶点定义的任意形状。用户可以在这些顶点之间拖动一条线,形状应如下图所示做出反应。
所以在第一个例子中,用户将线 EF 从左边的位置拖到右边的位置(线 E2F2)。需要发生的是线 EF 增长/缩小,使其斜率保持不变,并且它的开始和结束坐标分别保持在线 DE 和 AF 上。这显示为 E2F2 行。
这需要足够通用,才能处理我扔给它的任何奇怪或规则的角度。第二组形状显示了一种更简单的方法。用户将线 CD 拖到 C2D2 的位置。注意斜坡是如何保持不变的,D2 基本上沿着对角线滑动,B2C2 和 C2D2 都在长度上延伸。结果是所有 3 个斜率都保持不变,但线 B2C2 和 C2D2 的长度会增加以保持连接,而线 D2E2 会缩小。
您需要了解,当拖动线 EF 时,您实际上是在移动坐标“E”。因此,计算第一个坐标很容易。前一个和下一个永远不会改变。所以我基本上有 3 条相关线的斜率和 4 个必要坐标中的 3 个。我需要第四个,所以在我的例子中,F2 或 D2。
每次坐标移动时,都会在事件上调用此代码。假设我们正在拖动线 EF - 那么坐标是 E。
arrays - 与圆相交时如何从折线获取Latlng数组
谷歌地图 v3 javascript
我有一个对象,其中包含路线中所有 Latlng 的数组(overview_path 数组) 我有一个 GPS 设备,预计将沿着该定义的路线移动。如果此设备与路线 X 米分开,我们可以认为它不在路线上。
我一直在想,在我的 gps 设备周围设置一个圆圈会与路线相交。圆半径将是 X 米的大小,这是考虑设备仍在路线内的允许公差距离。
如果交叉点响应超过 1 个 Latlng 元素,则 GPS 设备仍在路径中。如果路口响应为零,则 gps 设备不在路线上。
如何使圆和折线相交?
有没有更好的方法来评估这个要求?
谢谢大家!!:)
algorithm - 关于线段交点报告的时间复杂度
根据DM Mount,线段交点报告问题(单色情况)的最佳算法是 O(nlogn + k) 但红蓝交点报告问题的最佳算法是 O(n^4/3 log^O(1) n + k )。差异背后的明显原因如下:如果存在单色交叉点(在红蓝情况下),问题会更加困难。这是因为即使没有双色交叉点,也可能存在二次方的单色交叉点。
为什么不能用最优线段相交算法来解决红蓝相交问题?这将使这个问题在 O(nlogn + k) 中可以解决
c++ - 确定分段线的交点
/我需要确定由多个线段定义的一对线是否相交,例如由 定义的线(0,0), (1,2), (3,1)
和由定义的线(0,2), (2,-1), (4,1)
。
我不需要确定交点在哪里,但我需要一种有效的方法,因为我可以有大量的边。我正在使用下面的代码来确定两个线段是否相交,但这对于长度较大的线来说效率很低。此外,线是图中的边,它们被限制在已知的最大长度内。
geometry - how to connect 4 random points with 4 no intersecting line segments?
The points are in a plane,marked with two numbers indicating coordinates.give out a connect sequence.
math - 判断两条线是否相交
我在 stackoverflow 上看到了很多帖子,它们都在讨论这个话题。我从stackoverflow中获取了一个解决方案,但我找不到帖子。这就是说:如果两条线相交,那么叉积对于左侧和右侧会产生两个不同的结果。一正一负。否则两者具有相同的符号。到目前为止还好。使用的公式是,其中 AB 是一条线,CD 是另一条线。
dotproductleft = (Bx-Ax) (Cy-By)-(By-Ay) (Cx-Bx)
dotproductright = (Bx-Ax) (Dy-By)-(By-Ay) (Dx-Bx)
如果我为以下给定的 GPS 坐标计算这个,我会得到一个交叉点,在没有交叉点的情况下。
答:x:15.4433917 y:47.0697272
B: x: 15.4433661 y: 47.0697722
C: x: 15.4434363 y: 47.0696776
D:x:15.442966 y:47.0700098
如果我在 Google Maps Engine 上绘制它,我可以看到这些线之间肯定没有交集。
dotproductleft 的结果:-7.372399999828474E-10 和 dotproductright:1.1921940000328E-8
它适用于其他示例非常好,但在这里我发现它无法正常工作。但我无法在公式中发现任何错误。
algorithm - 平行多边形相交检测
有没有一种简单的方法来检测两个凹多边形的交集,这些凹多边形的所有边都相互平行或正交?