Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >确定是否可以使用单个三角形扇子绘制二维多边形

确定是否可以使用单个三角形扇子绘制二维多边形
EN

Stack Overflow用户
提问于 2012-04-25 17:07:58
回答 3查看 754关注 0票数 11

起初,我认为这个问题等同于判断一个多边形是否为凸的,然而,似乎一个三角形扇仍然可以画出一个非凸的多边形。Consider this shape,非凸多边形。可以很容易地想象一些中心点区域,允许使用三角形扇形绘制此多边形(尽管可能会有其他中心点不会)。给定一个固定的中心点,我希望能够确定定义多边形的二维点集是否允许使用单个三角形扇子绘制多边形。

似乎关键是确保从中心点绘制到任何顶点的线都不会“挡路”,这意味着顶点的其他边线。然而,重要的是让计算成本尽可能低,我不确定是否有一个很好的数学捷径来做到这一点。

最终,我要让多边形的顶点移动,我需要确定一个顶点允许移动的“边界”,假设其余的都是固定的(也许稍后还会允许直接2个邻居的同时反应移动),以保持多边形能够在单个三角形扇形中绘制。但这是未来的事情,希望整个多边形的测试可以分解为计算的子集,以测试单个顶点移动的边界,并假设已经是凸多边形。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-25 17:35:15

如果从锚点到每个顶点的角度在同一方向上移动,则可以将多边形绘制为三角形扇形。测试这一点的最简单方法是检查连续顶点的叉积的点积。

它看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
vector lastCross = cross_product( vector(vertex[0] - center), vector(vertex[numVerts - 1] - center) );

canBeFan = true;
for (n = 1; canBeFan && n < numVerts; ++n) {
    vector testCross = cross_product( vector(vertex[n] - center), vector(vertex[n - 1] - center) );
    if (0.0 >= dot_product(testCross, lastCross) ) {
        canBeFan = false;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-04-25 17:25:30

您要查找的属性是"star-shaped“。星形多边形是通过具有一个点来定义的,从该点可以看到整个多边形。

要测试多边形是否为星形,可以构造整个多边形可见的区域。该区域将是一个凸集,因此您可以在O(log(n))中将其与半平面相交。

这意味着您可以与边形成的半平面相交,并检查生成的可见性区域在O(n log n)中是否是非空的。

票数 13
EN

Stack Overflow用户

发布于 2012-04-25 17:37:47

看起来所有潜在的中心点都需要位于多边形每条边的内侧。因此,把所有的边都当作半空格,并确定它们的交集是否为空。

正如@jpalecek所说,这个术语是星形的。如果您的多边形是星形的,那么将有一个凸多边形(原始多边形的内部),其点可以查看原始多边形的所有边--相反,如果不存在这样的子多边形,则原始多边形不是星形的,并且您不能用三角形扇子绘制它。

确定此子多边形基本上是convex hull问题的dual应用程序;它可以在O(n log n)中计算。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10320475

复制
相关文章
如何在 Tableau 中对列进行高亮颜色操作?
在做数据分析时,如果数据量比较大,可以考虑使用颜色对重点关注的数据进行高亮操作,显眼的颜色可以帮助我们快速了解数据和发现问题。比如一个数据表可能会有十几到几十列之多,为了更好的看清某些重要的列,我们可以对表进行如下操作——
小马哥的牛棚
2020/08/20
6.1K0
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 前言 代码 删除效果 修改效果 ---- 前言 对json数据进行修改删除操作,数组里面有两个
贵哥的编程之路
2022/10/24
1.2K0
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.2K0
Flutter:如何在没有插件的情况下制作旋转动画
本文将向您展示如何使用Flutter 中内置的RotationTransition小部件创建旋转动画。
徐建国
2022/03/30
1.8K0
Flutter:如何在没有插件的情况下制作旋转动画
在没有源代码的情况下对Linux二进制代码进行模糊测试
AFL配合DynamoRIO,没错,就是drAFL。在drAFL的帮助下,我们就可以在没有源代码的情况下对LInux二进制代码进行模糊测试了。
FB客服
2019/05/31
1.6K0
如何在不导致服务器宕机的情况下,用 PHP 读取大文件
协作翻译 原文:How to Read Big Files with PHP (Without Killing Your Server) 链接:https://www.sitepoint.com/performant-reading-big-files-php/ 译者:Tocy, Tony, 南宫冰郁, Tot_ziens 作为PHP开发人员,我们并不经常需要担心内存管理。PHP 引擎在我们背后做了很好的清理工作,短期执行上下文的 Web 服务器模型意味着即使是最潦草的代码也不会造成持久的影响。 很少情况下
企鹅号小编
2018/02/11
1.7K0
如何在不导致服务器宕机的情况下,用 PHP 读取大文件
如何在不会导致服务器宕机的情况下,用 PHP 读取大文件
英文:Christopher Pitt ,译文:oschina www.oschina.net/translate/performant-reading-big-files-php 作为PHP开发人员,我们并不经常需要担心内存管理。PHP 引擎在我们背后做了很好的清理工作,短期执行上下文的 Web 服务器模型意味着即使是最潦草的代码也不会造成持久的影响。 很少情况下我们可能需要走出这个舒适的地方 ——比如当我们试图在一个大型项目上运行 Composer 来创建我们可以创建的最小的 VPS 时,或者当我们需要
企鹅号小编
2018/02/08
1.3K0
如何在不会导致服务器宕机的情况下,用 PHP 读取大文件
PHP没有定时器?
确实,PHP没有类似于JS中的setInterval或者setTimeout这样的原生定时器相关的函数。但是我们可以通过其他方式来实现,比如使用declare。
硬核项目经理
2020/02/17
9750
使用 CLIP 对没有任何标签的图像进行分类
深度图像分类模型通常在大型带注释数据集上以监督方式进行训练。尽管模型的性能会随着更多注释数据的可用而提高,但用于监督学习的大规模数据集通常难以获得且成本高昂,需要专家注释者花费大量时间。考虑到这一点,人们可能会开始怀疑是否存在更便宜的监督资源。简而言之,是否有可能从已经公开可用的数据中学习高质量的图像分类模型?
小白学视觉
2022/12/27
3.6K0
使用 CLIP 对没有任何标签的图像进行分类
ocr文字识别软件是什么?要怎么进行操作
如今计算机领域可以说是发展得越来越好,而且也让我们的生活变得越来越方便快捷。比如在出国旅游的时候,我们已经可以通过一些软件应用来进行英文的扫描翻译,并且也可以实时进行语音翻译,即便是不会说英语的人也可以在国外轻松和他人交流。而如今纸质化的文件和电子化的文件也能够轻松实现转化,通过ocr文字识别软件即可以转换,那么ocr文字识别软件是什么呢?
用户8739990
2021/07/02
11.4K0
用程序对hdfs进行操作。
调试加安装了半天,怎么也没有配置好怎么通过Eclipse直接连接hdfs,最后我还是打成一个jar包放到Linux虚拟机中执行的。
用户5166556
2019/04/16
4840
php-php对mysql数据库的操作
连接mysql(mysql_connect()) 选择你创建的数据库(mysql_select_db()) sql语句的执行(mysql_query()) 显示取出来的数据(mysql_fetch_array()) 关闭连接(mysql_close())
kdyonly
2023/03/03
4.7K0
利用宝塔对服务器进行管理和操作
<!--more--> <a href="http%3A%2F%2Fimg.yzt-tools.com%2F20190516%2F20a36619bc298c6eb694465915817a2e.jpg%3Fx-oss-process%3Dimage%2Fresize%2Cw_600%2Fauto-orient%2C1%2Fquality%2Cq_90%2Fformat%2Cjpg" class="highslide" onclick="return hs.expand(this,{slideshowGro
王荣胜
2020/03/13
8870
Nat. Microbio.l | BacterA I:在没有先验知识的情况下对微生物代谢进行建模
今天为大家介绍的是来自Paul A. Jensen团队的一篇利用强化学探索微生物知识的论文。训练人工智能(AI)系统进行自主实验可以大大提高微生物学的吞吐量;然而,很少有微生物有足够大的数据集来训练这样的系统。在本研究中,作者引入了一种名为BacterAI的自动化科学平台,它可以对微生物代谢进行建模,不需要任何先前知识。BacterAI通过将科学问题转化为与实验室机器人进行的简单游戏来进行学习。该方法将其发现总结为可以被人类科学家解释的逻辑规则。
DrugAI
2023/09/19
3220
Nat. Microbio.l | BacterA I:在没有先验知识的情况下对微生物代谢进行建模
Python对txt进行读写操作
全文件读写 读操作使用pandas.read_csv,写操作使用data.to_csv。 import numpy import pandas as pd #读 data = pd.read_csv(r"/home/snowstorm/mmdetection/data/groundtruth.txt", header=None) #读取TXT:逗号分隔 #data = pd.read_csv(r"/home/snowstorm/mmdetection/data/groundtruth.txt", head
代码的路
2022/07/29
6890
Python对txt进行读写操作
原文链接 全文件读写 读操作使用pandas.read_csv,写操作使用data.to_csv。 import numpy import pandas as pd #读 data = pd.read_csv(r"/home/snowstorm/mmdetection/data/groundtruth.txt", header=None) #读取TXT:逗号分隔 #data = pd.read_csv(r"/home/snowstorm/mmdetection/data/groundtruth.txt"
代码的路
2022/07/26
6620
如何对图像进行卷积操作[通俗易懂]
2、卷积操作:卷积核与原图对应位置相乘再求和;然后将所求和放在被卷积操作的图中心位置。
全栈程序员站长
2022/08/26
3K0
如何对图像进行卷积操作[通俗易懂]
使用 PHP 函数对变量进行比较
使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; NULL TRUE TRUE FALSE FALSE $x is undefined NULL TRUE TRUE FALSE FALSE $x = array(); array TRUE
Denis
2023/04/15
1.4K0
点击加载更多

相似问题

对非常相似的图像进行排序PHP OCR

20

如何对刻字进行OCR?

44

如何在Prolog中编写对列表进行操作的函数

313

在不编写执行该操作的函数的情况下对系列进行链式操作。

11

如何在没有编写器的情况下使用PHP-蒸汽社区

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档