多边形点集排序
创始人
2024-05-06 13:13:03
0

一、问题描述

已知多边形点集P = {P1, P2, ... , PN},其排列顺序是杂乱,依次连接这N个点,无法形成确定的多边形,需要对点集P进行排序后,再绘制多边形。

二、排序规则

点集排序过程中,关键在于如何定义点的大小关系。以按顺时针排序为例,算法步骤如下。

2.1 定义点的大小

定义:点A在点B的顺时针方向,则点A大于点B

  1. 计算点集的重心O,以重心作为逆时针旋转的中心点。

  1. 计算点之间的大小关系。

大小关系的计算,可由两种方法进行计算。

2.2 大小关系判定

2.2.1 根据夹角判定

以重心O作一条平行于X轴的单位向量OX1,然后依次计算OP和OX1的夹角。根据夹角的大小,确定点之间的大小关系。OP和OX1夹角越大,说明点P越小,如图所示。

2.2.2 根据向量叉积判定

根据向量叉积的定义,向量OA和OB的叉积大于0,则向量OB在向量OA的逆时针方向,即点B小于点A。反之,向量OB在向量OA的顺时针方向,即点B大于点A。

三、代码实现

依据2.2.2节中的向量叉积方法,多边形点集排序的代码如下:

四、参考资料

http://blog.csdn.net/beyond071/article/details/5855171

http://stackoverflow.com/questions/6989100/sort-points-in-clockwise-order

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...