查找最接近点的多边形顶点的索引

2024-06-20

Heading

我需要找到最接近点的多边形的索引

所以在这种情况下,输出将是 4 和 0。这样,如果添加了红点,我就知​​道将顶点放置在数组中的位置。有谁知道从哪里开始?

(抱歉,如果标题有误导性,我不知道如何正确表达它)

enter image description here
In this case the ouput would be 0 and 1, rather than the closest 4.


Point P位于该段上AB,如果两个简单条件同时满足:
AP x PB = 0//叉积,向量共线或反对共线,P位于AB线上
AP . PB > 0//标量积,排除反共线情况以确保P在段内

因此您可以检查所有顺序顶点对(伪代码):

if (P.X-V[i].X)*(V[i+1].Y-P.Y)-(P.Y-V[i].Y)*(V[i+1].X-P.X)=0 then
//with some tolerance if point coordinates are float
   if (P.X-V[i].X)*(V[i+1].X-P.X)+(P.Y-V[i].Y)*(V[i+1].Y-P.Y)>0
       then P belongs to (i,i+1) segment

这是快速直接(暴力)方法。
计算机几何中存在特殊的数据结构,可以快速选择候选线段 - 例如,r-tree http://en.wikipedia.org/wiki/R-tree。但是这些复杂的方法对于长(多点)折线以及多次使用同一多边形的情况会有所帮助(因此预处理可以忽略不计)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找最接近点的多边形顶点的索引 的相关文章

  • 找到三角测量时覆盖另一个点的最近 3 个点的算法

    想象一张画布 周围随机分布着一堆点 现在选择其中一点 您如何找到距离它最近的 3 个点 这样如果您画一个连接这些点的三角形 它将覆盖所选点 澄清 我所说的 最近 是指到该点的最小距离总和 这主要是出于好奇 我认为 如果一个点未知 但周围的点
  • 另一个生命游戏问题(无限网格)?

    我一直在玩 Conway 的生命游戏 最近发现了一些令人惊讶的快速实现 例如 Hashlife 和 Golly 在这里下载Golly http golly sourceforge net http golly sourceforge net
  • 需要创建一个“选择你自己的冒险”类型的指南 - 最佳使用方法

    基本上需要询问用户一系列问题并收集信息 每个问题都可能对以后的不同问题产生影响 另一个例子是涡轮税的网络界面 在某些 上回答 是 可能会引发未来的问题 似乎这在软件中是一个相当常见的问题 所以我想我是在问是否有任何现有的解决方案 设计模式可
  • 棒材切割 - 动态规划

    问题陈述 棒材切割问题如下 给定一根长度为n英寸和价格表Pi for i 1 2 3 n 确定最大收益Rn可以通过切割棒并出售碎片来获得 请注意 如果价格Pn对于一根长度的杆n足够大 最佳解决方案可能根本不需要切割 考虑以下情况 n 4 图
  • Go 算术中处理浮点数精度?

    我对 Go 中精确减去 2 个浮点数的方法感兴趣 我尝试过使用math big图书馆 但我无法得到准确的结果 我用过big js https github com MikeMcl big jsJavascript 库解决了这个问题 Go 算
  • 在地图元素上使用 for_each

    我有一个映射 我想在其中对每个数据类型对象成员函数执行调用 我还知道如何在任何序列上执行此操作 但是是否可以在关联容器上执行此操作 我能找到的最接近的答案是 Boost Bind 访问 std for each 中的 std map 元素
  • 埃拉托色尼筛法的 Java 实现可以超过 n = 2^32?

    目前我有这个质数生成器 其限制为 n Sieve public class Main public static void main String args long N 2000000000 initially assume all in
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • Lamport 的 Paxos 中的矛盾做了简单的论文

    阶段 2 a 如果提议者收到大多数接受者对其准备请求 编号为 n 的响应 则它向每个接受者发送一个接受请求 以获取编号为 n 且值为 v 的提案 其中 v 是响应中编号最高的提案的值 或者如果响应未报告任何提案 则为任意值 正如论文中提到的
  • 解决复发问题

    我被给予F 0 X and F i A F i 1 2 B F i 1 C 1000000 for 1 i N 现在给出N A B C and X 如何找到所有N元素有效吗 我需要将这 N 个元素分成 2 个集合 其中最大的元素在第一个集合
  • 运动结构,根据 2D 图像点对应关系重建 3D 点云

    Use case 物体绕其中心以不同的速度旋转 固定摄像机正在观察物体 给定 2D 图像点对应关系重建 3D 点云 当物体旋转时 相机可以看到它的不同部分 从而检测到不同的点和对应关系 Scene A N 张图片b N 1 图像对C N 1
  • 将 2:1 等距柱状全景图转换为立方体贴图

    我目前正在为网站开发一个简单的 3D 全景查看器 出于移动性能的原因 我使用 Three jsCSS 3 渲染器 https github com mrdoob three js blob master examples css3d pan
  • 无限循环:确定并打破无限循环

    你如何判断一个循环是无限循环并且会跳出它 有没有人有算法或者可以帮助我解决这个问题 Thanks 没有通用的算法可以确定程序是否处于无限循环中图灵完备 http en wikipedia org wiki Turing completene
  • 如何在 Perl 中生成数组的所有排列?

    生成所有内容的最佳 优雅 简单 高效 方式是什么 n perl 中数组的排列 例如 如果我有一个数组 arr 0 1 2 我想输出所有排列 0 1 2 0 2 1 1 0 2 1 2 0 2 0 1 2 1 0 它可能应该是一个返回迭代器的
  • Python数学域错误[重复]

    这个问题在这里已经有答案了 我正在编写一个程序来求解二次方程并打印根 在进入主程序之前 我只是想求平方根 我收到的错误是 数学域错误 如果有人能给我一些帮助来解释为什么它不起作用 那就太好了 import math a int sys ar
  • 从样条解的给定点数组中查找 3 维 B 样条控制点?

    佤族正在谈论非均匀有理 B 样条 http en wikipedia org wiki Non uniform rational B spline 我们有一些简单的 3 维数组 例如 1 1 1 1 2 3 1 3 3 2 4 5 2 5
  • 递归最长递增子序列的记忆

    我为最长递增子序列提出了简单的以下递归解决方案 但是 您可以帮助将记忆包含到这个递归解决方案中吗 public int findLIS int a int maxSoFar int item int count if item a leng
  • 如何使用 C 中的 Banker's Rounding 将 double 舍入为 int

    我想编写一个函数 使用银行家的舍入方法将双精度数舍入为整数 将一半舍入为偶数 http en wikipedia org wiki Rounding Round half to even http en wikipedia org wiki
  • 确定数字在以 0 为中心并螺旋增加的数字网格中的位置

    我有以下数字网格 以 0 为中心并螺旋增加 我需要一个算法 它可以接收螺旋形数字并返回 x y 从 0 到该数字的移动次数 例如 对于数字 9 它将返回 2 1 如果是 4 则为 1 1 25 26 etc 24 9 10 11 12 23
  • 拉伸数组

    我有一个形成曲线的样本向量 假设其中有 1000 个点 如果我想将其拉伸到填充 1500 个点 给出不错结果的最简单算法是什么 我正在寻找一些只有几行 C C 的东西 我总是想增加向量的大小 并且新向量可以是当前向量大小的 1 1 倍到 5

随机推荐