问题标签 [line-segment]

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.

0 投票
1 回答
3748 浏览

python - 3d中从点到线段的距离(Python)

我正在寻找可以计算从 3D 中的点 (x_0,y_0,z_0) 到由其端点 (x_1,y_1,z_1) 和 (x_2,y_2,z_2) 定义的线段的距离的 Python 函数。

我只为这个问题找到了 2D 的解决方案。

有一些解决方案可以在 3d 中找到从点到线的距离,但不是到线段的距离,如下所示: dist 到分段

(图片取自用特殊情况计算点到线段的距离

0 投票
1 回答
254 浏览

algorithm - 如果连接任意两个单元格之间的两个随机点,如何确定哪些网格单元格将与中心单元格相交

我有一个数学难题/问题

在 3 x 3 网格的情况下,如果我们连接两个相邻单元格内的两个随机点,我如何确定哪些线将与中心单元格相交。邻居由 (grid_size - 1) / 2 = 1 定义,其中网格大小为 3 或 sqrt(单元格数)。例如,单元格 1 和 3 是相邻单元格,这条线将与中心单元格相交。单元格 0 和 8 不是因为距离 2 个单元格。

因此,在 3 x 3 的情况下,以下单元格的点之间绘制的线将与中心单元格相交:1-3、1-5、7-3、7-5

3 x 3 网格

现在有了 5x5 网格,事情变得更加复杂。由于 (grid_size - 1) / 2 = 2 其中网格大小为 5 或 sqrt(单元格数),邻居被认为距离中心单元格 2 步。以下单元格的线将与中心单元格相交:

2-11, 2-13, 7-10, 7-11, 7-13, 7-14, 17-10, 17-11, 17-13, 17-14, 22,11, 22-13, 6- 13、6-17、6-18、7-16、7-17、7-18、8-11、8-16、8-17、11-13、11-18、16-13、1-13、 3-11、5-17、7-15、7-19、9-17、11-23、13-21

5 x 5 网格

编辑澄清:

在一个单元格中时,我正在从当前单元格中的一个点到周围 5 x 5 网格(粉红色)的相邻单元格中的点绘制线条。在单元格中,我还需要考虑在相邻单元格(绿色)之间绘制的任何相交线。

在此处输入图像描述

我可以在一个单元格(灰色)中迭代所有单元格和行,但这将是低效的。

在此处输入图像描述

理想情况下,我只会绘制/计算可能与单元格相交的线。

片段着色器的一部分:

0 投票
2 回答
536 浏览

java - 直线与正方形的交点

我在二维空间中有一个正方形(宽度 = 高度)。该正方形当前由两个点定义:BottomLeft(X1,Y1) 和 TopRight(X2,Y2)。

正方形是轴对齐的,因此找到其他两个角就像 (X1, Y2) 和 (X2, Y1) 一样简单。

我也有两点——一个总是在广场里面,另一个肯定在外面。它们不一定在广场的中心——它们可以在任何地方。我也知道他们的坐标。

我需要的是找到这两个点定义的线段与正方形边之间的交点。我也想知道我与正方形的哪一侧相交。给我带来麻烦的是线对角线并靠近正方形角落的情况 - 例如,它可以与顶部或侧线相交。

蛮力法是尝试计算正方形每一边的交点并检查它是否存在。可以通过计算第二个点相对于正方形的位置并丢弃两条线来优化它(例如,如果 X 和 Y 坐标都增加,则无需检查正方形的底部和左侧)。

我想知道是否有更好/更快的解决方案来解决我的问题?我将用 Java 编写

0 投票
1 回答
556 浏览

c++ - 查找两条 3d 线段的公共端点

所以我有两个 3d 线段 A 和 B 唯一给定的是两个线段的起源和它们的长度。我需要以它们在同一位置结束的方式来定位两条线段。前任:

该函数应返回 true,公共结束位置为 {1, 0, 1.7321} 如果它们不能定向以便它们在同一端点结束,则该函数将返回 false

0 投票
1 回答
88 浏览

function - 任何已知的线性算法来近似具有线段的函数?

我有一个由点列表给出的函数,例如:

我需要一种算法(具有线性复杂度)将此函数/列表“切割”成 K 个间隔/子列表,以便每个间隔/子列表包含“位于线段附近”的点(看一下图像) 在此处输入图像描述

数字K可以由算法本身决定,也可以是算法的参数。(最好由算法本身决定)

有没有我可以使用的已知算法?

0 投票
3 回答
966 浏览

c++ - 有多少条线段将在一个平面上与一条水平线相交?找到这个的最有效方法是什么

我正在尝试解决这个 Cyber​​chef 挑战

在平面上给你 N 个点(编号为 1 到 N);对于每个有效的 i,第 i 个点是 Pi=(i,Ai)。它们之间有 N-1 个线段(编号为 1 到 N-1);对于每个有效的 i,第 i 个线段是通过连接点 Pi 和 Pi+1 形成的。

给你 Q 个水平线段。每个查询水平线段由两个点表示,从点 (x1,y) 到点 (x2,y)(它停止并且不再传播)。对于每个水平线段,您必须从它在途中碰撞的那些(N-1 条线段)中找到线段的数量。

所以这就是问题所在:

  • 2<=N<= 100000
  • 1<=Q<= 100000

谁能教我在时间复杂度方面哪种方法最好和最有效?

0 投票
1 回答
260 浏览

javascript - 如何从连接的线段中获取多边形

我有一个连接线段的列表。如何获得多边形。

示例代码可视化:

在此处输入图像描述

0 投票
1 回答
83 浏览

algorithm - 查找距离小于某个界限的所有线段对

令 L1,...,Ln 为平面 (IR^2) 中的 n 个不同线段。它们应成对不相交。此外,让 r 表示距离(实数值)。考虑找到所有对 (i,j) 的问题,其中 Li 和 Lj 的(欧几里德)距离小于 r。

我为运行时间 O(n^(3/2)) 的问题编写了一个简单直接的扫描线算法,如果可以假设对于所有相关的 x0 坐标,大约 n^(1/2) 线段位于在由 x = x0 和 x = x0 + r 界定的垂直条纹中。

当然我很好奇,如果有一个众所周知的(或不太知名的)更好的算法(希望是 O(n log(n)) 算法等),但无法通过谷歌或更具体地说找不到任何合适的算法堆栈溢出。

有人知道更多吗?

0 投票
0 回答
68 浏览

java - Java:使用线段定义二维形状并避免间隙

我正在研究一个代码概念(Java),其中用户将单击点以指示简单二维结构轮廓上的点。

我的计划是组成多个线段的形状。然后我需要计算这个轮廓的“形状”(线段的集合)和另一个单线段(即一条射线)之间的距离(重叠/矢量幅度),例如见下图。我以为我可以大量使用线段交点*并编写了以下 Java 代码:

我的问题是:

  1. 如何处理不同的端点,以便形状轮廓上的线段之间没有间隙?(由于用户放点不完善)

  2. 如何告诉算法线段属于同一形状。

对于 1,我认为我可以使用一个阈值,这样如果两条线段的一个端点在彼此的 X 像素内,那么它们会“捕捉”到同一个端点(例如,两个端点的平均值或使用端点两条线段之一的点值)。例如,请参见下图中的黑色形状。

对于 2,我认为我可以使用整数“标记”每个属于相同“形状”(线段集合)的线段。

对于这些问题有没有更好的解决方案?

*注意:我仍然需要处理/捕获代码中的所有条件,例如线段是否平行,线段是否在(a 形状)线段端点处相交等。

在此处输入图像描述

参考:

1 https://en.wikipedia.org/wiki/Intersection_(Euclidean_geometry)#Two_line_segments

0 投票
1 回答
579 浏览

r - plotly::add_segment 中的虚线

有没有办法使用 add_segments() 函数来创建虚线?

我试过使用线型,线型,线=列表(...),破折号=“破折号”但似乎没有任何效果。这是一些带有水平线的示例代码。现在它只是忽略 linetype 参数。

我有办法解决这个问题,但我喜欢 add_segments 的简单性/可读性,因此最好使用它而不是 add_lines()。