三角形垂点坐标js算法(三点定圆求圆心)
已知平面三点坐标A(x1, y1)、B(x2, y2)、C(x3, y3),三点定圆也就是三角形的中垂线交点,
//平面三点定位算法
function locate(x1, y1, x2, y2, x3, y3) {
var a, b;
a = (y2 - y1) / (x2 - x1);
b = y1 - a * x1; var xMiddle = (x1 + x2) / 2;
var yMiddle = (y1 + y2) / 2;
var c, lastX, lastY;
if (a != 0) {
c = yMiddle - (-1 / a) * xMiddle;
lastX = (Math.pow(x1, 2) + Math.pow(y1, 2) - Math.pow(x3, 2) - Math.pow(y3, 2) - 2 * c * y1 + 2 * c * y3) / (2 * ((x1 - x3) - (1 / a) * (y1 - y3)));
lastY = (-1 / a) * lastX + c;
} else {
lastX = c = xMiddle;
lastY = (Math.pow(x1, 2) + Math.pow(y1, 2) - Math.pow(x3, 2) - Math.pow(y3, 2) + 2 * lastX * (x3 - x1)) / (2 * (y1 - y3));
}
console.log("定位点X坐标: " + lastX);
console.log("定位点Y坐标: " + lastY);
}
locate(116.3, 39.9, 115.8, 39.8, 117, 39.5);
locate(7,8, 7,23, 20,10);
三角形垂点坐标js算法(三点定圆求圆心)的更多相关文章
- HDU 6206 Apple ( 高精度 && 计算几何 && 三点构圆求圆心半径 )
题意 : 给出四个点,问你第四个点是否在前三个点构成的圆内,若在圆外输出"Accepted",否则输出"Rejected",题目保证前三个点不在一条直线上. 分 ...
- JS算法练习三
JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...
- js算法集合(二) javascript实现斐波那契数列 (兔子数列)
js算法集合(二) 斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解. Javascript实 ...
- js算法初窥03(简单搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- js算法初窥05(算法模式02-动态规划与贪心算法)
在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...
- js算法初窥03(搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上
/// <summary> /// p点到(a,b)点两所在直线的垂点坐标 /// </summary> /// <p ...
- 前端总结·基础篇·JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·JS(一)原型.原型链.构造函数和字符串(String) 前 ...
随机推荐
- ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
今天ytkah进行了应急数据库恢复,用Navicat for Mysql导入sql文件出现ERROR 1153 (08S01): Got a packet bigger than 'max_allow ...
- SQL SERVER 2016研究二
2.动态数据屏蔽 创建数据表: 创建账号并授予获取屏蔽后数据的权限 此函数:partial(0,"XXX-XXXX-",4) 表示从左边0位开始依次替换到倒数4位. 注意:屏蔽只作 ...
- vue中的路由高亮
- Linux简单版重要安装步骤
1.稍后安装操作系统 2.自定义硬件 3.选择镜像(mini) 4.开机选择第一个 5.skip(跳过检测) 6.是,忽略所有数据 7.配置网络 8.设置root用户密码 9.使用所有空间 10.写入 ...
- Py中enumerate方法【转载】
转自:http://www.runoob.com/python/python-func-enumerate.html enumerate(sequence, [start=0]) sequence - ...
- 配置android.support.v7.widget.Toolbar 搜索框样式
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- git stash 用法总结和注意点
常用git stash命令: (1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不 ...
- ICSharpCode.TextEditor使用及扩展
SharpDevelop (#develop)有很多“副产品”,其中最出名的应算SharpZipLib (#ziplib),纯C#的ZIP类库,而在SharpDevelop (#develop)中,“ ...
- 10.C# 构造函数
1.构造函数 构造函数是用来初始化对象的,只能由new运算符调用.构造函数与类同名,没有返回值,不能用void修饰,可以有public和private两种修饰符,当用private修饰时外界不能访问到 ...
- Android提权漏洞CVE-2014-7920、CVE-2014-7921