问题标签 [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 回答
8866 浏览

java - 使用 PathIterator 返回所有约束区域的线段?

在 Java 中,如何使用PathIterator来遍历约束Area? 仅受Area线约束(但曲线支撑不会受到伤害)。

该方法应返回所有线段的集合。

0 投票
1 回答
2496 浏览

matlab - 识别所有共线线段(在matlab中)

我在这里发布了一个相关但不相同的问题https://stackoverflow.com/questions/8279698/measuring-length-of-dna-fibers-from-an-image-of-single-molecules

背景:我有很多看起来像这样的图像: 在此处输入图像描述

我想识别所有共线的线段,然后测量这些线段的长度。在上图中,有 3 对线段位于一条具有负斜率的假想线上。最长的线段没有一对,因此不会被考虑,即必须至少有 2 个共线的线段。

我得到以下信息: 在此处输入图像描述

为了获得合理的性能,我不得不使用这些参数(尽管我无法找到一个参数来捕获位于底部的段的起始位)。但是,我无法避免找到重叠的多个段。

有人可以帮我 1. 防止识别重叠段。2.识别所有共线的线

非常感谢!

0 投票
1 回答
605 浏览

wpf - 为什么这个简单的 LineSegment 在 Silverlight 中会从画布中心底部跳到左上角?

我有一些非常简单的代码可以“正确”在 WPF 中的 1024x768 蓝色画布上绘制一条短的垂直黑线(在 Silverlight 4 中也是如此)。

这是代码隐藏

现在,如果我改变线段的终点,那么我不仅改变了起点的 Y,还改变了 X,尽管只有一个像素,整条线都呈现在画布的左上角. 这是修改后的代码隐藏。

如果两者都呈现在画布的中心底部,或者都呈现在画布的左上角,我可以理解。但我不明白为什么第一个代码块导致该行呈现中心底部,而第二个代码块导致该行呈现左上角。

请注意,我没有使用 Canvas.Top 或 Canvas.Left。

任何见解都感激不尽!

0 投票
1 回答
85 浏览

computational-geometry - 加速段/段交集

假设您在 R^2 中有一组段(称为 S)。每个段都包含在一个尺寸为 WxH 的盒子中(因此,集合 S 有四个额外的段,盒子的每一侧都有一个段)和一个要添加到 S 的段 s。段 s 从点 A 开始(将属于到 S 中的一个线段)并在 B 点结束。我要计算的是点 B',这样 B'属于 S 中的一个线段,而 AB'不与 S 中的任何其他线段相交。是否有在不使用蛮力算法的情况下计算 B' 的 wat(即,将 AB 与 S 中的每个其他段相交)?

0 投票
1 回答
490 浏览

algorithm - 查找由线段切割的切片,即 3D 多边形上的原点

我有一组三角形顶点(多边形的面),比如

我有一个线段,由 2 个 3D 顶点表示,比方说[[j, k, l], [m, n, o]]

我有一点[p, q, r]

我想要做的是,通过线段投影多边形上的点,并检查它是否完全切割多边形(我认为 4 个接触点就足够了?我可能错了)。如果是这样,我需要位于边缘和顶点上的所有交点。

我完全迷失在这里。任何指针将不胜感激。

0 投票
2 回答
905 浏览

wolfram-mathematica - 点和线段的交点。两者都在移动

我如何知道以固定速度移动的点和端点正在移动的线段之间的时间和交点?端点独立移动,但仅沿正 y 方向移动,并且以固定速度移动。

情况图片:

交点.png

所以随着时间 t,L1 移动到 L2,R1 移动到 R2,P1 移动到 P2。在某个点,P 在时间 t 的位置应该位于 L 和 R 在时间 t 形成的线段上的某个位置。

我在mathematica中坚持了我能提出的每一个关系,并让它解决了t,这给了我一个答案,但是当我尝试实现它时它似乎不起作用(没有检测到碰撞。我很新到mathematica并且真的不知道我在做什么,所以我有点希望有更多经验的人会注意到我试图解决方程组的方式存在根本错误。感谢阅读!

其中 U 是时间 t 的线段。

  • Ly = L1y + (L2y - L1y) * t
  • Ry = R1y + (R2y - R1y) * t
  • Py = P1y + (P2y - P1y) * t
  • Px = P1x + (P2x - P1x) * t
  • Ux = L1x + (R1x - L1x) * m
  • Uy = Ly + (Ry - Ly) * m
  • m = (Px - L1x) / (R1x - L1x)

求解 t 其中:

  • Ux = Px
  • Uy = Py

解决方案:

  • A = (P2x - P1x) * (L2y - L1y) - (P2x - P1x) * (R2y - R1y)
  • B = (P2x - P1x) * L1y + (P2x - P1x) * R1y - P1x * (L2y - L1y) + L1x * (L2y - L1y) + P1x * (R2y - R1y) - L1x * (R2y - R1y) + (P2y - P1y) * (R1x - L1x) - (R1x - L1x) * (L2y - L1y)
  • C = P1x * L1y - P1x * R1y - L1y * L1x + R1y * L1x + P1y * (R1x - L1x) - L1y * (R1x - L1x)

t = (-B + -sqrt(B^2 - 4AC)) / 2A

0 投票
3 回答
1838 浏览

algorithm - 如何在二值图像中找到线段的 x、y 的中点?

我在二进制图像中有一些损坏的线段,我需要修复它们(使它们笔直并保持原来的粗度)。为了做到这一点,我必须找到线段的中间点,所以当我检查邻域以找到线条的粗细时,我将能够找到像素停止为 1 并变为 0 的位置。

0 投票
1 回答
930 浏览

collision-detection - 弧线段碰撞检测

如何检查线段和圆弧之间的距离?

弧是未填充的,所以只是圆的外边缘是计数的一部分。

我想做碰撞检测。基本上我有两个圆形物体。一个在直线上移动,另一个在圆弧上移动。对象具有碰撞半径。

请注意,这不是精确的碰撞检测,因为我相信没有封闭形式的解决方案可以进行时间分析(有迭代解决方案)以恒定速度移动。

我只需要伪代码。虽然我可以通过将圆弧转换为两个没有厚度的圆弧和两端的两个圆并使用传统算法来做到这一点,但这是时间敏感的。将其分解为基元并单独检查会重新检查/重新计算一些东西,我想避免任何不必要的计算。

0 投票
1 回答
1469 浏览

algorithm - 查找线路径的交点

我有两条贝塞尔曲线,它们共享一个端点。这些曲线中的每一个在左右两侧都有一个“延伸”,类似于道路的边缘。扩展由近似贝塞尔曲线的线段组成。

我想找到这些路径与贝塞尔曲线的共享端点最近的交点。

这是我绘制的问题图

每条线路径都有超过 100 个顶点,因此与每条线相交并保持最近的交点可能会变得非常慢,因为这必须实时运行。

在检查交点以加快速度之前,我已经在线上运行了边界球相交测试,但它仍然不够快。我的下一个方法是使用某种四叉树结构。

我查看了Bentley-Ottmann 算法,但它似乎处理在一组线中查找所有交叉点,这不是我需要的。我还查看了 Bezier 曲线相交算法,但它们似乎需要细分成线段,我已经有了。

是否有任何有用的算法可以解决这个问题,或者关于如何优化它的任何想法?

0 投票
2 回答
254 浏览

graphics - 在中心连接的矩形之间的间隙

我正在尝试一种基于矢量的图形样式,其中对象表示为具有给定宽度的一系列线段(将这些视为矩形可能更容易)。问题是这些段在中心连接并留下间隙(如下所示)。我已经确定覆盖这个间隙的最有效方法是简单地用一个三角形覆盖它,因为我在 OpenGL 中工作,所以我需要的是不与另一个矩形重叠的两个点的点,第三点是连接两条线段(矩形)的中心点。鉴于我拥有两个矩形的所有点,我如何确定三角形需要使用哪些点?

例子

编辑:我也会接受替代解决方案,只要它们能弥补这一差距。

编辑2:没关系,我解决了。一旦我有更好的互联网连接,我会发布代码。