通过多个点,计算出中心点
通过多个点,计算出中心点,我这里是JavaScript方法,其他大家懂其他语言也可以进行转换,我写的主要是一个思路。
求出来的并不是原有的点,而是原有点的中心位置的点。这个中心点是尽可能包括多个点。
通过两点形成的矩形,看能包括多个点。包括最多的点的两个点,再求这两个点的中心点,这就是最终的中心点。可能我说的有点难理解,下面看代码就可以知道了。如果有什么不对,欢迎评论和指正。
代码:
<!DOCTYPE html>
<html><head><title>计算中心点</title>
</head><body><script>function mathCenterPoint(pointList) {let centerPoint;let centerMap = new Map();let maxFlag = 0;for (let i = 0; i < pointList.length; i++) {for (let j = i + 1; j < pointList.length; j++) {//两两点组合let aPoint = pointList[i];let bPoint = pointList[j];let maxX = Math.max(aPoint[0], bPoint[0])let maxY = Math.max(aPoint[1], bPoint[1])let minX = Math.min(aPoint[0], bPoint[0])let minY = Math.min(aPoint[1], bPoint[1])let flag = 0;//开始比较for (let k = 0; k < pointList.length; k++) {//判断c点是否在这两个点形成的矩形框中间let cPoint = pointList[k];if ((cPoint[0] >= minX && cPoint[0] <= maxX) &&(cPoint[1] >= minY && cPoint[1] <= maxY)) {flag++;}}let tempCenterPoint = [(maxX + minX) / 2, (maxY + minY) / 2];if (flag >= maxFlag) {maxFlag = flag;if (centerMap.has(maxFlag)) {tempCenterPointX = centerMap.get(maxFlag);if (Math.abs(tempCenterPoint[0] - tempCenterPoint[1]) <= Math.abs(tempCenterPointX[0] - tempCenterPointX[1])) {centerMap.set(maxFlag, tempCenterPoint);}} else {centerMap.set(maxFlag, tempCenterPoint);}} else {centerMap.set(flag, tempCenterPoint);}//说明这两个点围成的矩形包裹了全部点if (flag == pointList.length) {//那么中心点就是中间点console.log("矩形包裹了全部点");centerPoint = centerMap.get(maxFlag);return centerPoint;}}}if (!centerPoint) {console.log("覆盖和多少个点:", maxFlag)centerPoint = centerMap.get(maxFlag)}return centerPoint;}let pointList = [[2, 3],[1, 1],[4, 22],[9, 14],[10, 1],[11, 23]]let centerPoint = mathCenterPoint(pointList);console.log("centerPoint:", centerPoint)</script>
</body></html>
通过多个点,计算出中心点相关推荐
- python 二维坐标多边形 计算多边形中心点,以及距该中心点最远的距离
def center_geolocation(geolocations):'''输入多个经纬度坐标(格式:[[lon1, lat1],[lon2, lat2],....[lonn, latn]]),找 ...
- cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标
cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标 最近因为用到了这个函数,所以就趁着这个机会,好好顺顺,做下记录. ellipse = cv2.fitEllipse ...
- 成功计算出文本类单词的概率
首先是wordcount package org.lukey.hadoop.classifyBayes;import java.io.IOException; import java.util.Arr ...
- 将一个字符串计算出CRC16/XMODEM校验码(4位)
将一个字符串计算出CRC16/XMODEM校验码(4位) unsigned short CRC16_XMODEM(unsigned char *puchMsg, unsigned int usData ...
- excel函数公式html文档,Excel中把计算式转换为运算结果的方法 EXCEL中计算出的公式如何转换成纯文本内容?...
如何在EXCEL中将计算公式直接变结果如我在A1输入计算式:(1+2*3+4/5-6)*1.2+(1+5) 如何在B1得出该计算式的选中B1然后按快捷键ctrl+F3,进入名称管理器,新建,输入任意名 ...
- 定义一个计算字符串有效长度的_一个正方形的小抽屉柜,根据设计草图计算出所需四片木板的长度...
这里想做的是一个正方形的小抽屉柜,首先根据设计草图标出尺寸计算出所需四片木板的长度. 其中,有两个边的木板是要靠着燕尾榫机的左边制作,另两个边的木板是要靠着燕尾榫机的右边制作. 修出四片木板. 试靠着 ...
- python计算某年某月多少天_Python编程实现输入某年某月某日计算出这一天是该年第几天的方法...
本文实例讲述了Python编程实现输入某年某月某日计算出这一天是该年第几天的方法.分享给大家供大家参考,具体如下: #基于 Python3 一种做法: def is_leap_year(year): ...
- 请使用日期时间相关的API,计算出一个人已经出生了多少天
package com.learn.demo03.DateFormat;import java.text.ParseException; import java.text.SimpleDateForm ...
- 问题描述 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底
问题描述 给定一个由n行数字组成的数字三角形如下图所示.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径 ...
- python计算n阶乘中尾部零的个数_(Java)设计一个算法,计算出n阶乘中尾部零的个数...
展开全部 long 类型对大数阶乘来e68a8462616964757a686964616f31333365633963说存储范围大小,强行使用会溢出,可以使用 BigDecimal. 代码如下:im ...
最新文章
- 决策树算法之cart剪枝
- 易宝典——玩转O365中的EXO服务 之三十六 为软删除邮箱启用就地保留
- 批量下载的实现及java.lang.IllegalStateException异常
- css3 上线圆角效果
- 据说这篇总结覆盖了一般Python开发面试中可能会问到的大部分问题
- jupyter not a color scheme terminal
- 冷高轮时间王思聪吃热狗电脑屏幕保护下载
- 关于vscode CloudMusic 插件无法登陆
- Caused by: java.io.IOException: ZIP entry size is too large
- 《寒江独钓》内核学习笔记(1)-- IRP - .Little Hann
- 基础30讲 第六讲 中值定理
- ArcGIS_标准差椭圆分析
- 政务云市场开启“狂飙”:一项前三,两项跃升!
- 金碟文件保存在服务器哪里,金蝶软件服务器地址在哪改
- SpringCloud 实战笔记
- 查看指定端口的占用情况
- 我们需要一颗强劲的心脏 2 --机房改造篇
- 论文阅读(9)---基于Transformer的多模态CNN心电图心律失常分类
- easypoi 语法_曼哈顿语法使用方法+网站分享
- 四级联动框实现筛选查询