主要思想就是先按照横坐标排个序,然后确定最左边的顶点为起点,分别跟其他顶点画一条之前,然后判断剩下的两个点是否在这条直线的两侧,如果在两侧,那么排好序的四个坐标点就是:
最左边的点,直线上侧的点,连线的点,跟直线下侧的点。
具体如下代码:

function ssort(points) {// points like [[1,2],[4,1],[5,-1],[10,3]]let path = points;path.sort((a, b) => a[0] - b[0]);for (let j = 1; j < 4; j++) {let a = (path[0][1] - path[j][1]) / (path[0][0] - path[j][0]);let b = path[0][1] - a * path[0][0];let p0, oppo, p1;if (j == 1) {oppo = path[1];p0 = path[2];p1 = path[3];} else if (j == 2) {p0 = path[1];oppo = path[2];p1 = path[3];} else if (j == 3) {p0 = path[1];p1 = path[2];oppo = path[3];}let c0 = a * p0[0] + b - p0[1];let c1 = a * p1[0] + b - p1[1];if (c0 * c1 < 0) {if (c0 > 0) {path = [path[0], p0, oppo, p1];} else {path = [path[0], p1, oppo, p0];}break;}}return path;
}

四个坐标点顺时针排序相关推荐

  1. 四边形坐标顺时针排序

    1. 做图像检测的时候处理数据经常遇到给出矩形的四个坐标点,要求找出左上角坐标并对乱序的坐标按顺时针或者逆时针进行排序.Its extremely important to maintain a co ...

  2. OpenCV基础(26)使用 Python 和 OpenCV 顺时针排序坐标

    1.使用 Python 和 OpenCV 顺时针排序坐标 这篇博文的目标有两个: 1.主要目的是学习如何按照左上.右上.右下和左下的顺序排列与旋转边界框相关联的(x, y)坐标.按照这样的顺序组织边界 ...

  3. [Java]给定二维平面中的4个坐标点,如何判定这四个坐标点能否构成长方形?(经_典_面_试_题_目)

    给定二维平面内的四个点,判断这四个点是否能组成正方形.坐标(x,y)为整数. 输入的整数范围为 [-10000, 10000].       当我们面对问题的时候首先不能头大,回顾初中所学的知识,如何 ...

  4. c语言判断四个坐标点正方形,四个坐标点判断是否为正方形

    四个坐标点判断是否为正方形 在做ACM题目的时候,遇到了要求输入四个点的坐标,然后判断这四个点能否构成一个正方形.这个看似很简单,但细节方面还是有许多问题的.我想的方法很容易理解,而且一次就AC了. ...

  5. 将四个整数按照升序排序

    如何将四个数按照从小到大进行排序? 作者采用的是先输入四个数存入数组中,然后进行比较,最小的放在数组第一位,循环往复,数组内的值即为按升序排列,然后将数组值输出 输入:7 4 9 2 则输出: 2 4 ...

  6. 理解Unity3D中的四种坐标体系

    coffeecato写在前面:本文比较了unity3d中的四种坐标系,在使用unity3d开发的过程中,已经多次被坐标转换之类的问题卡住,这篇文章可以说是系统的对四种坐标系进行了总结,结合实际的使用经 ...

  7. matlab求球心坐标,已知四顶点坐标求四面体外接球球心坐标

    最近在做一个关于机器人标定的问题,发现求空间一点相对六轴机器人的坐标问题实际是一个求已知四顶点坐标求四面体外接球球心坐标的问题.首先控制机器人(携带工具)以四个不同姿态接触被测点,要注意四个姿态要保证 ...

  8. 使用ArcGIS获取行政区四至坐标的两种方法

    ** 使用ArcGIS获取行政区四至坐标的两种方法 ** 今天听了赵老师的课,学到好多知识.尤其是获取行政区四至坐标的两种方法. 首先,说一下数据.数据包括好多个行政区,见图. 第一种方法:使用pyt ...

  9. (二十九)arcpy开发利用arcpy在arcgis中实现批量计算图斑四至坐标(polygon顶点计算,范围获取、pyhon类创建)

    首先,可以参考arcpy学习视频. https://edu.csdn.net/course/detail/25535 一.问题与解决方法 这个方法的灵感来自昨天昨天,下面来说一下实现功能. 一直以来都 ...

最新文章

  1. Java带有运算符的字符串转换为Long型
  2. java 新建double对象_java-如何在BlueJ“创建对象”对话框中输入...
  3. php获取ip 1,为什么php获取ip显示::1?
  4. XGBoost的参数说明
  5. 嵌入式码农的10年Bug调试经验,值得一看
  6. 最短路--DijkstraFloyedSPFA
  7. 165. 比较版本号
  8. Python 线程池 ThreadPoolExecutor(一) - Python零基础入门教程
  9. tomcat不能解析php,tomcat不支持php怎么办
  10. 双剑合璧————Spring Boot + Mybatis Plus
  11. 使用Navicat计划任务备份数据库
  12. vue router.beforeEach跳转路由验证用户登录状态
  13. Tomcat6.0 配置外部数据源(JNDI)
  14. 强烈推荐一本MYSQL入门及复习的好书
  15. 人脸对齐(一)--定义及作用
  16. SSL基础:12:查询证书详细信息
  17. Kotlin 使用DSL构建语法结构 看这一篇就够了~
  18. android将照片压缩并显示,android拍照选择图库后将照片剪裁压缩显示到imageview上 -电脑资料...
  19. 一个男网友娶到一个女网友后在洞房发生的事情
  20. 【博主推荐】html好看的爱心告白源码

热门文章

  1. 《第一行代码》第三版之探究Fragment(六)
  2. 动态修改 xm-select 颜色
  3. Kafka【付诸实践 03】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
  4. 小白前端自制红警登陆界面(试水前端)
  5. 企业数字化转型之道:3L8P转型模型
  6. 大数据导论--大数据安全与数据开放共享
  7. 一起来设计“塔防游戏”吧
  8. html5 堆叠柱状,Highcharts 堆叠柱形图
  9. 深度学习100问之提高深度学习模型训练效果(调参经验)
  10. 什么是基本表?什么是视图?两者的…