寻找多个多边形的共同轮廓

2023-12-28

我试图找到一种在多个多边形之间绘制公共轮廓的算法。 我的意思就像这张照片上的那样:

我们有两个矩形(在我的例子中,它们不是矩形,而是大多数角度为直角的多边形),我正在寻找共同的轮廓,例如图像第二部分上的红色路径。我认为最大的问题是找到新的点,我在图像的第二部分将其标记为黄色。 多边形永远不会相交或接触自身。我按逆时针顺序将多边形存储为点。

我正在寻找一些线索、来源,甚至是我应该在谷歌上搜索的关键词,这可能会让我的任务变得更容易......

编辑:它类似于凸包,但看边缘而不是顶点,当我看它时,黄点可能位于边缘的延续上。

编辑2:好的,我需要在多边形周围绘制给定大小的边框,但是这样的话,如果两个多边形比边框大小更接近,它们将具有公共边框,这是两个边框的总和,没有“内部”部分它和这两个多边形将被视为一个形状。所以我试图找到这个红色多边形,它将用于在其周围绘制边框。


首先向多边形(黄色的)添加额外的顶点,方法是将所有边与延伸到无穷大的所有其他边一起剪切(例如,将边变成无限线)。

将新顶点连接到延伸边。这将为您提供一个多边形网格。

现在技巧来了:

启动条件:

  • 选择最左上角的顶点,只能有一个!

  • 选择与 1 找到的顶点相连并向右延伸的斜率最小的边。该边将始终位于最终多边形的周长上。

迭代:

  • 从当前边缘开始,按顺时针顺序沿着其他边缘行走。 执行此操作时,您将遇到新的顶点,并且这些顶点可能连接到多个其他边。始终选择最逆时针方向的一个并继续。这将使您始终保持在最终多边形的周长内。

结束条件:

  • 当您再次到达左上角时立即停止。

恭喜,您刚刚绕着多边形的外边缘走了一圈。

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

寻找多个多边形的共同轮廓 的相关文章

  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • 优化两个三位数乘积的最大回文数?

    我正在研究一个面试问题 我被问到这个问题 我应该编写一个程序 从两个三位数的乘积中找到最大的回文数 这里是question https projecteuler net problem 4 我想出了这种从底部开始的蛮力方法 public c
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 依次构建完整的 B 树

    如果我有一组排序的数据 我想以最适合顺序读取和随机查找的方式将其存储在磁盘上 那么 B 树 或其中一个变体 似乎是一个不错的选择 假设该数据集并不全部适合 RAM 问题是可以从一组排序的数据构建完整的 B 树而不进行任何页面拆分吗 这样排序
  • 测量数组的“无序”程度

    给定一个值数组 我想找到总 分数 其中每个元素的分数是数组中出现在其之前的具有较小值的元素的数量 e g values 4 1 3 2 5 scores 0 0 1 1 4 total score 6 O n 2 算法很简单 但我怀疑可以通
  • 将数字的各个数字部分相加/求和的最快方法

    不久前 我在数学论坛上看到一个问题 其中一个人正在讨论一遍又一遍地将数字中的数字相加 直到达到个位数 即 362 将变成 3 6 2 这将变成 11 然后 11 将变成 1 1 将变成 2 因此 362 将返回2 我写了一些很好的代码来得到
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 整数除法性质

    下面的整数算术性质成立吗 m n l m n l 起初我以为我知道答案 不成立 但现在不确定 它适用于所有数字还是仅适用于某些条件 即n gt l 该问题涉及计算机算术 即q n m q m n 忽略溢出 Case1 assume m kn
  • 如何使用networkx删除有向图中的所有相关节点?

    我不确定我的问题的正确术语是什么 所以我只会解释我想做的事情 我有一个有向图 删除节点后我希望所有独立相关的节点也被删除 这是一个例子 假设我删除节点 11 我希望节点 2 也被删除 在我自己的示例中 它们将是 2 以下的节点 现在也必须删
  • 如何确定字符串的最小公约数?

    我在面试时被问到以下问题 并被它难住了 我遇到的部分问题是要下定决心要解决什么问题 起初我并不认为这个问题在内部是一致的 但后来我意识到它要求你解决两个不同的问题 第一个任务是弄清楚一个字符串是否包含另一个字符串的倍数 但第二个任务是在两个
  • 加权图的 BFS 算法 - 寻找最短距离

    我看过很多帖子 即 post1 https stackoverflow com questions 30409493 using bfs for weighted graphs post2 https cs stackexchange co
  • 查找两个大小为 n 的数组中第 n 大数的算法

    我有这个问题 给定两个大小为 n 的排序列表 存储在数组中 找到 O log n 计算并集中第 n 大元素的算法 两个列表 我可以看到这里可能有一个技巧 因为它需要第 n 个最大的元素 并且数组的大小也是 n 但我不知道它是什么 我在想我可
  • 为什么在使用 repaint() 而不是使用 getParent().repaint() 时会出现此 Swing 错误?

    这个问题是基于我不久前在一个简单的 Swing 骰子程序中遇到的问题 我发布的原始问题是here https stackoverflow com questions 22306637 mystery concurrency componen
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • 埃拉托斯特尼筛法是生成 1 到 N 素数的最佳算法吗?

    我在一次采访中被问到这个问题 我使用埃拉托色尼筛子概念和数组实现了一种算法 有没有更好的方法来解决这个问题 对于不知道筛子的人 请点击以下链接 http en wikipedia org wiki Sieve of Eratosthenes
  • 计算总和等于 k ​​的子集数量

    给定一个数组 我们需要找出总和恰好等于给定整数 k 的子集的数量 请针对这个问题提出一个最佳算法 这里不需要实际的子集 只需计数即可 该数组由整数组成 可以是负数也可以是非负数 例子 数组 gt 1 4 1 10 5 绝对值总和 gt 9
  • 获取一条线与地平线的角度

    我想知道如何获得线 A B 与水平轴 X 的角度 SO 中的其他问题仅在两条线之间进行此操作 我知道我总是可以绘制第二条线 A C 并计算 但我想知道是否有更快的方法 编辑 我非常确定我没有进行过早的优化 您可以使用atan为了那个原因 a
  • 查找数组中 2 个缺失数字的最快方法

    这个问题的存在只是出于纯粹的好奇心 不是作业 找到在数组 1 n 中找到两个缺失数字的最快方法 因此 在相关帖子中 查找数字数组中缺失数字的最快方法 https stackoverflow com questions 2113795 qui

随机推荐

  • 在 Scala Spark 中加入不同 Dataframe 时动态选择多个列

    我有两个 Spark 数据框df1 and df2 有没有办法在连接这两个数据帧时动态选择输出列 以下定义在内部联接的情况下输出 df1 和 df2 中的所有列 def joinDF df1 DataFrame df2 DataFrame
  • Doctrine2...最佳补水模式?

    我正在设计一个房间预订系统 它有九个实体 它们都相互关联 在此特定实例中 我从实体中检索 10 30 行entry其中有 25 个属性 每个条目都有一个room其中有 10 个属性 我需要所有的条目信息以及entry gt room gt
  • 来自 Maven 的 Java OpenCV

    有没有办法从存储库获取 OpenCV 我应该添加到哪个工件pom xml 我找到的每个教程都是从 14 年开始的 似乎有些东西发生了变化 他们说它还没有出现在官方 Maven 存储库中 但我找到了条目
  • 创建使用 .NET 4.0 的应用程序池

    我使用以下代码创建应用程序池 var metabasePath string Format IIS 0 W3SVC AppPools serverName DirectoryEntry newpool DirectoryEntry appp
  • 上传到谷歌云存储时转换音频文件

    我有一个应用程序 用户可以在其中录制音频 然后相互 发送 我写的是 发送 因为实际上文件存储在服务器上 并且只是在收件人想要收听时提供给他们 我的问题是 我需要将录音 当前为 caf 重新格式化为 mp3 这样它们就会更小 这样我就可以用我
  • MySQL 的 C++ 连接器

    EDITED 我的问题是这篇文章底部的错误 这是我的附加包含目录 C Program Files boost C Program Files MySQL MySQL Connector C 1 1 3 include C Program F
  • 对未使用的变量使用占位符时出现 MatchError

    使用 Scala 2 13 x 我得到scala MatchError null当我对未使用的变量使用占位符时 scala gt object Test val Any null object Test scala gt Test scal
  • 如何在 Linux 中获取 .Net 文件的 AssemblyVersion

    有没有办法在不使用 mono 的情况下在 Linux 中获取 Net 可执行文件的 AssemblyVersion 我想要的是一个脚本或命令 可以让我在 Linux 机器上获取 AssemblyVersion 我试过 strings fil
  • 我的 NgRx 效果不起作用,没有任何反应

    我的 NgRx 效果有问题 该应用程序正确地添加到商店 不幸的是我的请求效果没有执行 即在启动添加新车时 将其添加到商店 仅此而已 问题是我的效果没有控制台日志 没有由于错误的网址而导致的 http 错误 什么也没有 我的应用程序代码 Re
  • Android textview 用作标签和值

    我想将两个文本视图分组为一个组并使用标签和值 android中是否有任何组件可以将两个textview分组 在android布局中如何实现呢 您可以使用
  • 节点拒绝应用样式,因为其 MIME 类型('text/html')不是受支持的样式表 MIME

    我要提供静态服务index html with main css使用此节点服务器 该serve js var express require express var cors require cors var app express var
  • RuntimeError:只能计算浮点类型的平均值。取而代之的是字节。对于平均值 += images_data.mean(2).sum(0)

    我有以下代码 Device configuration device torch device cuda 0 if torch cuda is available else cpu seed 42 np random seed seed t
  • 显示所有 jinja 对象属性

    有没有办法在 jinja 模板中显示给定对象的所有属性的名称 内容 功能 这将使调试未按预期运行的模板变得更加容易 我正在使用以下方式建立一个网站hyde框架 这会非常方便 因为我仍在学习 jinja 和 hyde 的复杂性 最初 我以为使
  • c 中的快速模 10

    我正在寻找一种快速的模 10 算法 因为我需要加速我的程序 该程序在循环中执行许多模运算 我已经结帐了这一页 http cc davelozinski com c sharp use the modulus operator or alte
  • 如何在Flutter中仅选择单选按钮的一组值?

    我正在使用 Flutter Dart SQLite 开发测验应用程序 在这里 我使用 RadioListTile 来实现单选按钮功能 我将文本值从数组传递到此StatefulWidget 这是我正在使用的代码 import package
  • LinkedHashMap EntrySet 的顺序未保留在流中(Android)

    我正在为注册屏幕创建一个非常简单的表单验证实用程序 并且我遇到了一些关于以下方面的意外行为LinkedHashMap以及从其创建的流entrySet 我将验证结果存储在LinkedHashMap 语句顺序如下 Map
  • 我想在我的项目中创建 django 弹出表单 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在 django 中创建了费用管理系统 问题是我使用简单的表单 对于每个表单 用户必须导航到单独的页面 我想在 django 中创建
  • React:axios网络错误

    这是我第一次使用axios 遇到了一个错误 axios get http someurl com page1 param1 1 param2 param2 id then function response alert catch func
  • 数据表动态隐藏/显示列太慢

    我的目标是使用数据表 JQuery 插件动态显示 隐藏列 当我有大约 500 行时 需要很长时间才能完成 我正在使用新的 Datatables API 1 10 0 oats detailed view button click funct
  • 寻找多个多边形的共同轮廓

    我试图找到一种在多个多边形之间绘制公共轮廓的算法 我的意思就像这张照片上的那样 我们有两个矩形 在我的例子中 它们不是矩形 而是大多数角度为直角的多边形 我正在寻找共同的轮廓 例如图像第二部分上的红色路径 我认为最大的问题是找到新的点 我在