首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找形状在x轴上宽度可能最小的旋转

查找形状在x轴上宽度可能最小的旋转
EN

Stack Overflow用户
提问于 2012-03-15 16:17:15
回答 4查看 290关注 0票数 4

我正在玩弄一个形状问题,我正在寻找一个比我所能想到的更聪明的解决方案。

以下是问题所在:

我有一组点,它们在笛卡尔网格上形成一个封闭的形状,比如A(-1,0),B(1,0)和C(0,4),它们形成了一个锐角三角形。

我已经以一种稍微不那么令人困惑的方式重写了这一点。以上面的形状为例,想象你可以自由地旋转它。我正在寻找我们只考虑x轴的旋转,并且最西点和最东点之间的距离是最小的。

当考虑到上面的形状时,这个距离是A和B之间的距离。而对于更有趣的形状,点之间的距离可能更短,我相信没有办法旋转上面的形状,使得西部和东部大多数点的距离小于A和B之间的距离。

到目前为止,我唯一的解决方案是绘制点,旋转1度,存储旋转关键的最大距离。重复冲洗,然后取最小的。这看起来有点笨拙,我知道必须有一种更合理的数学方法来解决这个问题。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-15 16:34:09

进行主成分分析,并将主成分与y轴对齐。这将优化从每个点到y轴的“平均”平方距离(即x轴上的宽度)。也许根据您的标准,这也是最优或接近最优的。

请参阅:http://en.wikipedia.org/wiki/Principal_component_analysis

备选方案(最优解):

首先计算点的凸包。请注意,具有最大x宽度的两个点始终位于凸包中。

现在,对于凸包中的每个线段,找到最远的顶点并记下距离。找到距离最小的(线段,最远的顶点)对。最佳旋转是将直线段在垂直方向上对齐的旋转。

复杂度:O(nlogn)表示凸包部分,O(m^2)表示第二部分,其中m是凸包上的点数。

票数 5
EN

Stack Overflow用户

发布于 2012-03-16 00:39:24

设{N}是定义包含形状的最小凸多边形的点集,按顺时针顺序排序。对于每条边(N - 1,N):确定从该边到最远点的距离。取这些距离中最短的一个,旋转您的形状,使相应的边垂直于X轴。

票数 1
EN

Stack Overflow用户

发布于 2012-03-16 11:50:53

Rotating Calipers是解决这一问题的好工具。

更具体地说,需要构造凸包,然后求出凸多边形的宽度。

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

https://stackoverflow.com/questions/9723772

复制
相关文章
Atom飞行手册翻译: 4.3 作用域设置、作用域和作用域描述符
Atom支持语言特定的设置。你可以在Markdown文件中软换行,或者在Python中把tab的宽度设置为4。
ApacheCN_飞龙
2022/11/27
4030
Atom飞行手册翻译: 4.3 作用域设置、作用域和作用域描述符
为matplotlib设置不同的主题
所谓主题,其实就是一套样式规则,对背景色,坐标轴,标题等图形基本元素的样式进行设定。R语言的ggplot2中,通过theme来指定图片主题,既可以采用系统自带的主题,也可以自定义其中的各个元素。
生信修炼手册
2020/09/04
2K0
为matplotlib设置不同的主题
git为不同的项目设置不同的邮箱
在我们使用Git开发项目的时候,可能经常会碰到个人和公司开发的项目都在一台机器上的情况。不管你们有没有,反正我是碰到了。因为公司有公司自己分配的邮箱,而我自己喜欢用自己的邮箱开发自己的项目。这样可能会导致邮箱混用的情况。
魔王卷子
2019/05/31
1.4K0
全局作用域、函数作用域、块级作用域的理解
ES6中新增的概念,在ES5中是没有的,ES5中没有? 没有的时候我们代码也写的好好的,现在新增的概念,我不用不行吗? 来,拋一个典型的问题出来,你就明白块级作用域出现的重要性了。
yuezhongbao
2019/02/26
3.1K0
全局作用域、函数作用域、块级作用域的理解
作用域与作用域链
通常来说,一段程序代码中所用到的名字并不总是有效或可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域scope。当一个方法或成员被声明,他就拥有当前的执行上下文context环境。在有具体值的context中,表达式是可见也都能够被引用。如果一个变量或者其他表达式不在当前的作用域,则将无法使用。作用域也可以根据代码层次分层,以便子作用域可以访问父作用域,通常是指沿着链式的作用域链查找,而不能从父作用域引用子作用域中的变量和引用。
WindRunnerMax
2020/08/27
1.9K0
3分钟短文:Laravel模型作用域,为你“节省”更多代码
原则上代码写一次,处处是引用,不需要大量的冗余代码,这是一种趋势,也是提高代码健壮性的努力方向。
程序员小助手
2020/10/04
1.4K0
作用域和作用域链的简单理解
javascript采用的静态作用域,也可以称为词法作用域,意思是说作用域是在定义的时候就创建了, 而不是运行的时候。此话对于初学者很不好理解,看看下面这个例子:
ZEHAN
2020/09/23
8320
作用域和作用域链的简单理解
JavaScript中的作用域和作用域链
作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。可能这两句话并不好理解,我们先来看个例子:
刘亦枫
2020/03/19
2.2K0
JavaScript中的作用域和作用域链
java作用域-什么是JavaScript作用域、作用域链?
作用域、作用域链也是面试中出镜率很高的问题之一java作用域java作用域,同时也是中最重要的基础概念之一。
宜轩
2022/12/29
2K0
Rust中的作用域及作用域的规则
所有权是 Rust 最独特的特性,它使 Rust 能够在不需要 GC 的情况下保证内存安全。在本章中,我们将讨论所有权以及几个相关特性:借用/切片,以及 Rust 如何在内存中布局数据。
端碗吹水
2022/06/02
4K1
Rust中的作用域及作用域的规则
作用域及作用域链的解释说明
javascript中作用域是指变量与函数可访问的范围。作用域分为两类,一种是全局作用域,一种是局部作用域。全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义。局部变量是在函数体内声明而且只作用在函数体内部以及该函数体的子函数的变量。下面我们对全局作用域和局部作用域来做一个深入的理解。
OECOM
2020/07/02
1.2K0
作用域及作用域链的解释说明
【RecyclerView】 九、为 RecyclerView 设置不同的布局样式
① 自定义 RecyclerView.Adapter 泛型类型 : 适配器的泛型类型需要设置为 RecyclerView.ViewHolder , 这是所有 ViewHolder 的基类 ;
韩曙亮
2023/03/28
9430
【RecyclerView】 九、为 RecyclerView 设置不同的布局样式
静态作用域和动态作用域
所谓作用域规则就是程序解析名字的方法。如果一个变量的名称不在当前作用域内,则这样的变量称为 unbound variable,例如有一个函数 (lambda () (+ a a)),a 就是一个 unbound variable,在当前作用域内我们无法找到这个变量。那么调用这个函数的求值结果是什么呢?显然要根据 context 来确定,对于 unbound variables 的解析,从解析的时机来划分,有两种规则,一种是「静态作用域」(Static Scope)也被称为「词法作用域」(Lexical Scope),另一种是「动态作用域」(Dynamic Scope)1。
zhiruili
2021/08/10
2.2K0
作用域、执行环境、作用域链
作用域,之前有介绍过,JavaScript无块级作用域,只有函数作用域,简单点说就是JavaScript的作用域就是函数作用域。因为有函数作用域,所以我们有全局作用域和局部作用域的说法。
wade
2020/04/23
1.5K0
JS作用域和作用域链
全局变量的作用域是全局性的,即在JavaScript代码中,该全局变量处处都有定义。
前端_AWhile
2019/08/29
4.2K0
JS作用域和作用域链
JavaScript作用域及作用域链
作用域 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限。 JavaScript 采用词法作用域(lexical scoping),也就是静态作用域。 因为 JavaScript 采用的是词法作用域,函数的作用域在函数定义的时候就决定了。 而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。
青梅煮码
2023/03/02
1.6K0
JavaScript 作用域和作用域链
作用域就是变量与函数的可访问范围。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。
零式的天空
2022/03/02
1.8K0
函数作用域和块作用域
正如上一章讨论,作用域包含了一系列的“气泡”,每一个都可以作为容器,其中包含了标识符(变量、函数)的定义,这些气泡互相嵌套并且整齐地排列成蜂窝型,排列的结构是在写代码时定义的。
Karl Du
2020/10/23
2.4K0
java作用域-javaScript预编译、作用域,作用域链详解
  ES5中只分为全局作用域和函数作用域java作用域,也就是说for,if,while等语句是不会创建作用域的。ES6(let,const)除外。
宜轩
2022/12/29
1.5K0
点击加载更多

相似问题

如何使用设计为不同的用户模型配置路由?

16

以作用域为不同类的别名Rails模型

14

为域模型设计类图

35

不同模型上的条件作用域

10

Spring Prototype作用域bean,配置的设计模式

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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