问题标签 [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 投票
2 回答
7535 浏览

algorithm - 查找共线线之间的重叠

给定两条共线线段 AB 和 CD,我如何找到它们是否重叠?如何定位重叠的起点和终点?

以下是我正在使用的方法。我首先要确保 A < B 和 C < D。

现在,没有更简单的解决方案来做到这一点吗?

更新:还有另一种方法......将两个段的长度之和与最外点之间的距离进行比较。如果后者较小,则存在重叠。

0 投票
3 回答
1255 浏览

java - 试图弄清楚两条线段是否相交

我有一条由两点 p1 和 p2 组成的线段,以及由点 p3 和 p4 组成的第二条线段。我试图弄清楚它们是否相交,到目前为止,我还没有运气。到目前为止,这是我的代码:

但这行不通。有时,角度“c”甚至是负数。

此外,Point 是一个自定义类,有两个参数:x 和 y。应该是不言自明的。

0 投票
1 回答
81 浏览

line - 计算两个粒子是否接近

我正在 PSM Studio 中为 2D 游戏做一些简单的碰撞检测。

我目前的方法涉及遍历每个游戏对象并找到另一个游戏对象之间的距离,然后查看两者是否在一定距离内(通常是每个对象组合宽度的 1/2)。如果是,则认为它们已发生碰撞。

虽然这种方法在许多情况下都有效,但它有一个主要的后备方案。如果一个物体以这样的速度移动,使得每帧的移动大于潜在碰撞物体的宽度(即快速移动的射弹朝向敌人),则该物体将基本上传送到另一个物体上,即使它们会发生碰撞,他们没有。

我正在考虑创建一种在两条线段上测试两个粒子的方法。线段将由更新期间每个对象的开始结束位置组成。

知道每个物体的极地运动(角度和大小)以及它们各自的线段,我能否计算出这两个粒子是否在那个神奇的距离内,这意味着它们已经发生了碰撞?

0 投票
1 回答
338 浏览

java - 如何旋转由线段组成的形状

您好,我正在用 java 制作游戏。我正在使用一组线条来表示一个形状来检测碰撞。我需要能够按度数或弧度旋转这个形状 在此处输入图像描述

从上图中可以看出,形状是具有 2 个点 a 和 b 的线段的集合。我需要知道如何将所有线条旋转在一起并保持形状。

0 投票
0 回答
381 浏览

java - 在给定 2 点坐标的 JPanel 中画一条线

我想绘制一条线,最好一次绘制一条虚线。给定两个端点的坐标,我们可以找到直线的方程对吗?因此推断出这条线上的所有点(像素)?但是我在一次绘制一个片段并最终到达第二个端点并擦除之前的片段时遇到了麻烦。看起来我们从 (0,0) 开始向 (5,5) 绘制,在此过程中我们显示段 (0,0)->(1,1) 然后使其消失并显示段 (1, 1)->(2,2) 依此类推,最后只显示 (5,5) 处的像素

0 投票
1 回答
740 浏览

matlab - Matlab - 检测线段和圆之间碰撞的功能失败

已经存在许多问题,涉及如何检测线段和圆之间的碰撞。

在我的代码中,我使用 Matlab 的linecirc函数,然后将它返回的交点与我的线段的末端进行比较,以检查这些点是否在线(linecirc 假设一条无限线,我没有/不想要) .

复制并添加对该函数sprintf的一些调用linecirc表明它正在按预期计算点。这些似乎被我的功能丢失了。

我的代码如下:

它创建一个六边形网格,然后计算以固定半径(在本例中为 62)绘制的圆与指定中心之间的交叉数。

scatter调用显示函数计数的位置。在块内实现sprintf调用if(p1OnSeg == 1)表明我的函数选择了虚构的交点(尽管它随后正确处理了它们)

输出

一张图片显示了奇怪的点。

在此处输入图像描述

很抱歉这个很长的问题,但是 - 为什么会检测到这些。它们不在圆上(在mylinecirc函数中显示值会检测到 (-25, 55) 和 (-25, -55) 左右的交点(正如无限线所期望的那样)。

移动圆圈可以移除这些点,但有时这会导致其他检测问题。这是怎么回事?

编辑:旋转我创建的网格图案[Vx, Vy] = voronoi(...),然后删除具有非常大值的点(即那些接近无穷大的点等)似乎已经解决了这个问题。似乎有必要删除“大”值点,以避免出现在“斜率”和“截距”中的 NaN 值。我的猜测是,这与旋转可能导致的轻微倾斜有关,再加上预期截距的溢出。

添加的示例代码如下。我还在 Jan de Gier 的代码中进行了编辑,但这对问题没有任何影响,因此问题代码中没有改变。

仍然感谢答案或建议以澄清为什么会发生这种情况。导致这种情况的示例值是getCutCountHex(30, [0,0])...(35, [0,0])

0 投票
0 回答
97 浏览

scatter-plot - 用不同坐标上的对应点将线段从一个绘图转移到另一个绘图

由于其性质,它可能是独一无二的。

所以我有一个情节(特别是一个经典的多维缩放情节)。通常,我导入了一个数据框,R但是我将在这里使用随机生成的数据,所以这是获取我的脚本MDS

然后我想在所有点之间画线。我这样做有点尴尬:

然后我用另一组数据创建了一个简单的 3d 散点图:

3D scatter-plot& 得到了与 MDS 图具有相同点数的熟悉- 基本上每个点都3D scatter-plot对应于MDS plot.

我的问题有两部分:

a)在我在 MDS 图上绘制线段的部分。有没有办法指定何时画线的阈值,即当两点之间的欧几里德距离低于我偏好的指定值时?

b)如何在 3d 散点图上的 MDS 图中的点在它们的对应点之间转移或模拟连接点的线段?

笔记:

我不能通过一个接一个地连接点对来手动执行此操作,因为这需要很长时间。
所以我需要一种方法来告诉 R 在 2 组不同的坐标(一个来自 MDS 图)和另一个来自我制作 3d 散点图的数据帧之间建立对应关系。当然,我需要告诉 R 保留 2 点之间的“距离”属性(即线段长度)作为不同的属性,例如线条颜色或粗细,以便在 3d 散点图中有意义,否则它会赢没什么意思。

0 投票
1 回答
95 浏览

java - 检测与用户添加的正方形的球碰撞

基本上,我被要求创建一个弹球游戏,将球发射到板上,用户可以控制脚蹼等以防止球撞击具有附加形状的吸收器,以充当保险杠以保持球在比赛中。

但是,我的碰撞遇到了一个小问题。用户可以单击板上的网格正方形以突出显示它,然后使用“添加正方形”按钮将一个高度为 20 和宽度为 20 的正方形添加到该突出显示的正方形,同时返回其 (x,y) 位置。

完成后,我然后使用添加正方形的 (x,y) 坐标将线段添加到正方形,以准备与球的碰撞检测。

..这是当球击中正方形任一侧时的碰撞检测代码。

但是,当我运行程序时,球只是继续穿过正方形。我想我忽略了一些我似乎无法解决的关键细节,这就是我在这里的原因,所以任何帮助或指示都将不胜感激。

0 投票
3 回答
1738 浏览

computational-geometry - 一组边的最外层多边形

在此处输入图像描述假设我有一组全部连接的二维线段。我需要一种算法来找到集合中最外层的段。即,限定同一区域的最小子集。

注意:这与找到构成线段的点的凸包不同。

编辑:顶部是初始段集。下面是删除了内部段的相同轮廓。(忽略灰色的小十字,它们只是用来标记交叉点。)

0 投票
1 回答
71 浏览

computational-geometry - 三个正交线段的凸包

我在 3D 中得到了三个线段。它们是成对正交的,但它们不需要接触。如果它们接触,它们的凸包体积为 1/6*s1*s2*s3,其中 s1,s2,s3 是线段的长度。这可以很容易地计算出来。但是如果他们不接触会发生什么?我希望凸包不会变小。

如果有人知道如何证明这一点或可以举一个反例,我将不胜感激。