[算法]直线与圆的交点程序设计
/*** Created by apple on 2017/1/15.*/
//求直线与圆的交点
/*函数参数说明:cx:圆X轴坐标cy:圆y轴坐标r:圆半径stx:起点直线的X轴坐标sty:起点直线的轴坐标edx:终点直线的X轴坐标edy:终点直线的Y轴坐标返回值:交点坐标(x,y)
*/
function getPoint(cx,cy,r,stx,sty,edx,edy) {// 求直线var k = (edy - sty) / (edx - stx);var b = edy - k*edx;//列方程var x1,y1,x2,y2;var c = cx*cx + (b - cy)*(b- cy) -r*r;var a = (1 + k*k);var b1 = (2*cx - 2*k*(b - cy));var tmp = Math.sqrt(b1*b1 - 4*a*c);x1 = ( b1 + tmp )/(2*a);y1 = k*x1 + b;x2 = ( b1 - tmp)/(2*a);y2 = k*x2 + b;
//判断求出的点是否在圆上var res = (x1 -cx)*(x1 -cx) + (y1 - cy)*(y1 -cy);var p = {};if( res == r*r){p.x = x1;p.y = y1;} else{p.x = x2;p.y = y2;}
return p;
}
//测试
var s = getPoint(10,20,50,34,45,12,34);
// 结果:{x: 48.2952871010182, y: 52.1476435505091}
console.log(s);
[算法]直线与圆的交点程序设计相关推荐
- Java:实现找到一般形式的直线与圆的交点算法(附完整源码)
Java:实现找到一般形式的直线与圆的交点算法 package com.williamfiset.algorithms.geometry;import static java.lang.Math.*; ...
- python计算直线与圆的交点,不用第三方库,方便迁移其他语言
python求圆和线段/直线的交点 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 ...
- matlab过圆心的直线,iOS计算过圆心直线与圆的交点
主要计算公式: 直线的一般方程 y = kx + b; 圆的一般方程 x^2 + y^2 + Dx + Ey + F = 0; 圆的基本系数关系 r = (根号(D^2 ...
- 求线段或直线与圆的交点
2019独角兽企业重金招聘Python工程师标准>>> 设圆心为O,圆半径为r,直线(或线段)L上的两个点为P1.P2. 第一步:如果L是线段且P1,P2都包含在O内,则没有交点. ...
- JAVA程序设计:求直线与圆的交点坐标
其实圆与直线的交点方程并不难解,难得是算法实现,废话不多说,直接上代码: 核心类 /*** @Author: Zhangwenshun* @Description:* @Date: Created i ...
- python 检测直线 交点_在python中,找到直线和圆的交点的最有效方法是什么?
我有一个由许多点组成的多边形.我想找到多边形和圆的交集.提供[x0,y0]的圆心和r0的半径,我写了一个粗函数来简单求解圆和直线的二次方程.但是,一个接一个地找到多边形的每个线段的交集的效率如何呢?有 ...
- 直线与直线、直线与圆、直线与矩形的交点
求直线与直线.直线与圆.直线与矩形的交点 直线与直线的交点:a1x + b1x + c1x = 0 与 a2x + b2x + c2x = 0的交点坐标可直接根据公式x = (b1c2 - b2c1) ...
- 直线和直线,直线和圆,直线和矩形的交点
直线和圆的交点公式 y=kx+b (x+c)² + (y+d)² = r² 的形式 转换成 ax+by+c=0 以(x, y)为圆心,r 为半径的形式 c++ // ax+by+c=0 // (x, ...
- C++求解圆心、半径、直线与圆交点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 C++求解圆心.半径.直线与圆交点 前言 一.检测对象 二.检测方法 1.检测圆心和半径 2.求解直线与圆的交点 3.计算圆环残缺比例 ...
- 计算几何——直线、线段和圆的交点
汇总篇:计算几何汇总 首先,求出圆心O在直线AB上的投影点E 然后求出AB的方向向量e=AB/|AB| 令EC=ED=base base = sqrt(r^2-OE^2) EC = -base *e ...
最新文章
- 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案
- 小米网络推广连夜更换品牌LOGO——科技越是进化就越接近生命的形态
- android动态添加标签,android – 动态添加Textview
- const 的学习(转载)
- 一、简谈Pandas
- 在VMware上装苹果系统后全屏
- ECshop网点程序优化-后台添加类目自动选择上次父类目并计算Sort Order
- 数据结构——字符串(未完)
- Python 实现快排、堆排
- Python代码实现飞机大战(经典)
- matlab randn 范围,请问randn产生的数据在什么范围内变化
- PS教程第七课:如何查看图层
- TaskTResult 多线程 多参数 返回值
- redis安装及简单使用
- java接口构造方法吗_Java中抽象类和接口中有构造方法吗?
- Araxis Merge pro for mac(文件对比合并同步工具)
- SpringMVC中解决POST和GET请求中文乱码问题
- 书籍写作规范——Word 公式篇
- python 区块链开发教程_区块链开发教程分享【201904】
- 树莓派3连接ps4无线手柄