Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >逆时针凸壳算法

逆时针凸壳算法
EN

Stack Overflow用户
提问于 2020-05-15 14:40:38
回答 1查看 43关注 0票数 0

我实现了Andrew's monotone chain convex hull algorithm

我得到了这些要点(a, a), (b, b), (c, c), (d, d)

我得到了(b, b), (d, d), (a, a), (c, c)

我需要(b, b), (c, c), (a, a), (d, d)

因此,我的结果从正确的点开始,但随后走向了错误的时钟方向。

这是我实现的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function cross(a, b, o) {
   return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0])
}

/**
 * @param points An array of [X, Y] coordinates
 */
function convexHull(points) {
   points.sort(function(a, b) {
      return a[0] == b[0] ? a[1] - b[1] : a[0] - b[0];
   });

   var lower = [];
   for (var i = 0; i < points.length; i++) {
      while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {
         lower.pop();
      }
      lower.push(points[i]);
   }

   var upper = [];
   for (var i = points.length - 1; i >= 0; i--) {
      while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {
         upper.pop();
      }
      upper.push(points[i]);
   }

   upper.pop();
   lower.pop();
   return lower.concat(upper);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 15:17:06

只需将数组元素的顺序从第一个索引恢复到末尾即可。例如,如果结果在数组arr[0 .. n]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
arr[0] | revert(arr[1 .. n])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61821862

复制
相关文章
解决 Mac和Idea 终端关闭后,环境变量失效,每次都需source ~/.bash_profile 问题
问题 ll 命令可以查看该文件夹下的所有文件信息,包括隐藏的文件, 但当使用此命令时却出现报错
全栈程序员站长
2022/07/19
2.1K0
解决 Mac和Idea 终端关闭后,环境变量失效,每次都需source ~/.bash_profile 问题
如何让Git记住你的GitHub Token,避免每次都要重复输入?
从2021.08.13开始, GitHub不再支持账号和密码的方式来pull和push代码了,取而代之的是官方推出的Token。
marsggbo
2021/10/09
5.5K0
如何避免 IDEA 每次重启都index
在 IntelliJ IDEA 中,可以通过以下几个步骤来避免每次重启时索引: 打开 File -> Settings 菜单。在左侧的菜单栏中选择 “Appearance & Behavior” -> “System Settings” -> “Synchronization”。
JavaEdge
2023/04/26
4.1K0
如何避免 IDEA 每次重启都index
git生成ssh key 避免每次push都要输入账号密码。
将id_rsa.pub文件中的内容添加到github上的Add SSH key页面即可
陈黎栋
2020/02/18
1.8K0
gradle 打包命令(怎么在mac终端输入命令)
估计好多兄弟们都习惯了用AndroidStudio和Eclipse的build直接对app进行打包,但是其实打包更应该用Gradle打包,我来附上方法:
全栈程序员站长
2022/07/31
2.3K0
git生成ssh key 避免每次push都要输入账号密码
第一步:生成public/private rsa key pair 在git的安装目录下,双击bash.exe,在命令行中输入ssh-keygen -t rsa -C "your_email@example.com"
全栈程序员站长
2022/07/08
6580
git生成ssh key 避免每次push都要输入账号密码
为了避免登录每次需要输入密码,配置成SSH免密登录。
1、点击[命令行窗口] 2、按<Enter>键 3、点击[命令行窗口] 4、按<Enter>键 5、点击[命令行窗口] 6、按<Enter>键 7、按<Enter>键 8、按<Enter>键 9、点击[命令行窗口] 10、按<Enter>键 11、点击[命令行窗口] 12、按<Enter>键 13、点击[命令行窗口] 14、按<Enter>键 15、按<Enter>键 16、点击[命令行窗口] 17、按<Enter>键
裴来凡
2022/05/28
1K0
为了避免登录每次需要输入密码,配置成SSH免密登录。
source命令
source命令,之前一直用来加载环境变量的,source一下然后执行某个sh,使其环境变量生效,但对细节没有追究;
千往
2019/07/10
1.9K0
scp上传文件到远程服务器,如何避免每次都要输入远程服务器的密码
在本地机器上使用ssh-keygen命令生成SSH密钥对。默认情况下,公钥和私钥会被存储在~/.ssh目录下。
JavaEdge
2023/06/10
1.6K0
如何在idea中配置git环境,使终端可以输入git命令
1.找到git目录,为它配置一个path 然后就像当初配置JAVA_HOME一样,新建一个,再加到path中
2020/10/23
1.7K0
如何在idea中配置git环境,使终端可以输入git命令
利用Python提升终端输入命令的准确性
终端输入一个命令,相当于一个字符串。如何检查输入是否正确,需要平时多练习,这里提供一个思路。利用python写一个函数来判断。利用python的切片功能,很方便的从字符串中遍历单个字符,并利用ord()函数获取其对应的ASCII 数值,或者 Unicode 数值。具体代码如下:
fem178
2022/05/05
3660
【Linux】Source 命令解释
source filename 与 sh filename 及./filename执行脚本的区别:
杨丝儿
2022/03/01
1.9K0
MySQL之source命令
今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库中就可以了。拿到的时候,才发现问题没我想的那么简单,我首先看到的是一个压缩包,大概30多M,解压之后,发现里面的内容是个.sql的数据文件,文件的大小是645M左右,这么大的文件,要是手动粘贴上去,那简直太变态了。第一反应这个是不是mysqldump出来的备份数据,要是这样的话,就可以直接在命令行中进行恢复了。于是打开看了一下里面的内容,发现这是一个标准的Navicat导出的sql文件,里面全都是各种的插入语句,到这里,一下子释然了,因为这样的就sql文件可以直接通过MySQL的source命令来倒入到数据库中,因为数据量很大,为了避免出错,我重新看了看source的语法,这里简单说明下。
AsiaYe
2019/11/06
11K0
Linux下.bashrc文件探索~
先骂人,再逼逼~上个环境还没有配置好,我就来写这个了.我不服!!!谁让咱们东西学的不系统呢~记录一下.bashrc文件的用途.毕竟zsh也得用不是~
云深无际
2021/04/14
12.6K0
Linux下.bashrc文件探索~
git每次push和pull都要输入密码
然后你使用上述的命令配置好之后,再操作一次git pull,然后它会提示你输入账号密码,这一次之后就不需要再次输入密码了。
全栈程序员站长
2022/07/19
1.4K0
Source Insight集成svn命令
option->Custom Commands 添加一个命令 名字:SVN Log (随便自己写) 运行:”C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe” /command:log /path:%f /notempfile /closeonend 其中TortoiseProc.exe的目录以自己电脑上的为准。
coderhuo
2023/10/21
2640
nvm管理node 原
(adsbygoogle = window.adsbygoogle || []).push({});
阿dai学长
2019/04/03
4260
windows终端输入pip insta
emmm这个问题我也不太懂,后来让他pip install requests这样操作,,
py3study
2020/01/16
6020
Linux终端输入设备tty
在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。
问天丶天问
2023/10/17
2360
点击加载更多

相似问题

预放大Audio OS X

12

Python中的os模块使用什么os?

12

OS :与图像相比,使用所有处理器

13

在Python中预填充输入

20

预优点预处理器不编译混合处理器

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文