/*** 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);

[算法]直线与圆的交点程序设计相关推荐

  1. Java:实现找到一般形式的直线与圆的交点算法(附完整源码)

    Java:实现找到一般形式的直线与圆的交点算法 package com.williamfiset.algorithms.geometry;import static java.lang.Math.*; ...

  2. python计算直线与圆的交点,不用第三方库,方便迁移其他语言

    python求圆和线段/直线的交点 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 计算直线与圆的交点,不用第三方库,方便迁移其他语言 主要应用:图像及几何计算应用 ...

  3. matlab过圆心的直线,iOS计算过圆心直线与圆的交点

    主要计算公式: 直线的一般方程      y = kx + b; 圆的一般方程        x^2 + y^2 + Dx + Ey + F = 0; 圆的基本系数关系     r = (根号(D^2 ...

  4. 求线段或直线与圆的交点

    2019独角兽企业重金招聘Python工程师标准>>> 设圆心为O,圆半径为r,直线(或线段)L上的两个点为P1.P2. 第一步:如果L是线段且P1,P2都包含在O内,则没有交点. ...

  5. JAVA程序设计:求直线与圆的交点坐标

    其实圆与直线的交点方程并不难解,难得是算法实现,废话不多说,直接上代码: 核心类 /*** @Author: Zhangwenshun* @Description:* @Date: Created i ...

  6. python 检测直线 交点_在python中,找到直线和圆的交点的最有效方法是什么?

    我有一个由许多点组成的多边形.我想找到多边形和圆的交集.提供[x0,y0]的圆心和r0的半径,我写了一个粗函数来简单求解圆和直线的二次方程.但是,一个接一个地找到多边形的每个线段的交集的效率如何呢?有 ...

  7. 直线与直线、直线与圆、直线与矩形的交点

    求直线与直线.直线与圆.直线与矩形的交点 直线与直线的交点:a1x + b1x + c1x = 0 与 a2x + b2x + c2x = 0的交点坐标可直接根据公式x = (b1c2 - b2c1) ...

  8. 直线和直线,直线和圆,直线和矩形的交点

    直线和圆的交点公式 y=kx+b (x+c)² + (y+d)² = r² 的形式 转换成 ax+by+c=0 以(x, y)为圆心,r 为半径的形式 c++ // ax+by+c=0 // (x, ...

  9. C++求解圆心、半径、直线与圆交点

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 C++求解圆心.半径.直线与圆交点 前言 一.检测对象 二.检测方法 1.检测圆心和半径 2.求解直线与圆的交点 3.计算圆环残缺比例 ...

  10. 计算几何——直线、线段和圆的交点

    汇总篇:计算几何汇总 首先,求出圆心O在直线AB上的投影点E 然后求出AB的方向向量e=AB/|AB| 令EC=ED=base base = sqrt(r^2-OE^2) EC = -base *e ...

最新文章

  1. 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案
  2. 小米网络推广连夜更换品牌LOGO——科技越是进化就越接近生命的形态
  3. android动态添加标签,android – 动态添加Textview
  4. const 的学习(转载)
  5. 一、简谈Pandas
  6. 在VMware上装苹果系统后全屏
  7. ECshop网点程序优化-后台添加类目自动选择上次父类目并计算Sort Order
  8. 数据结构——字符串(未完)
  9. Python 实现快排、堆排
  10. Python代码实现飞机大战(经典)
  11. matlab randn 范围,请问randn产生的数据在什么范围内变化
  12. PS教程第七课:如何查看图层
  13. TaskTResult 多线程 多参数 返回值
  14. redis安装及简单使用
  15. java接口构造方法吗_Java中抽象类和接口中有构造方法吗?
  16. Araxis Merge pro for mac(文件对比合并同步工具)
  17. SpringMVC中解决POST和GET请求中文乱码问题
  18. 书籍写作规范——Word 公式篇
  19. python 区块链开发教程_区块链开发教程分享【201904】
  20. 树莓派3连接ps4无线手柄

热门文章

  1. c语言编fft算法程序,FFT算法的C语言编程
  2. 图解:如何修改CSDN账号昵称?
  3. 数据结构课程设计- (二) 栈与队列(迷宫问题)
  4. 如何将Java源代码转换为HTML页面
  5. 怎么看java源代码
  6. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力
  7. 写给非网工的CCNA教程(6)VLAN和802.1q协议
  8. python雷达信号处理,信号处理之功率谱原理与python实现
  9. 姓名大战c语言,c语言姓名大作战游戏
  10. Python 每日一题(计算数值和)