1. /**
  2. * @param {Number} _x1 A点坐标
  3. * @param {Number} _y1 A点坐标
  4. * @param {Number} _x2 B点坐标
  5. * @param {Number} _y2 B点坐标
  6. * @param {Number} _distance AC距离
  7. */
  8. function getPoint(_x1, _y1, _x2, _y2, _distance) {
  9. let curPoint = {
  10. x: _x1,
  11. y: _y1
  12. };
  13. let nextPoint = {
  14. x: _x2,
  15. y: _y2
  16. };
  17. let L = _distance; //距离顶点的距离
  18.  
  19. // 第一步:求得直线方程相关参数y=kx+b
  20. let k = (curPoint.y - nextPoint.y) * 1.0 / (curPoint.x - nextPoint.x); // 坐标直线斜率k
  21. if (k == Infinity || k == -Infinity) {
  22. let x = curPoint.x;
  23. let y;
  24. if (curPoint.y > nextPoint.y) {
  25. y = curPoint.y - L;
  26. } else {
  27. y = curPoint.y + L;
  28. }
  29. return {
  30. x: x,
  31. y: y
  32. };
  33. } else {
  34. let b = curPoint.y - k * curPoint.x; // 坐标直线b
  35.  
  36. // 第二步:求得在直线y=kx+b上,距离当前坐标距离为L的某点
  37. let A = Math.pow(k, 2) + 1; // A=k^2+1;
  38. let B = 2 * ((b - curPoint.y) * k - curPoint.x); // B=2[(b-y0)k-x0];
  39.  
  40. // C=(b-y0)^2+x0^2-L^2
  41. let C = Math.pow(b - curPoint.y, 2) + Math.pow(curPoint.x, 2) - Math.pow(L, 2);
  42.  
  43. // 两根x1,x2= [-B±√(B^2-4AC)]/2A
  44. let x1 = (-B + Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);
  45. let x2 = (-B - Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);
  46.  
  47. let x = 0;
  48. if (x1 == x2) {
  49. x = x1;
  50. } else if (curPoint.x <= x1 && x1 <= nextPoint.x || nextPoint.x <= x1 && x1 <= curPoint.x) {
  51. x = x1;
  52. } else if (curPoint.x <= x2 && x2 <= nextPoint.x || nextPoint.x <= x2 && x2 <= curPoint.x) {
  53. x = x2;
  54. }
  55.  
  56. let y = k * x + b;
  57. return {
  58. x: x,
  59. y: y
  60. };
  61. }
  62. }

js已知A,B两点坐标,在线段AB上有C点,已知AC的距离,求C点的坐标的更多相关文章

  1. LightOj1388 - Trapezium Drawing(求梯形点的坐标)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1388 题意:已知梯形的点A B的坐标,以及b c d的长度,求C D两点的坐标:默认A ...

  2. Maven之——坐标和依赖(上)

    Maven之--坐标和依赖(上) 1.    Maven坐标概念 Maven通过构件的坐标来在Maven仓库中定位到详细的构件.Maven的坐标元素包含groupId.artifactId.versi ...

  3. js对象可扩展性和属性的四个特性(上)

    # js对象可扩展性和属性的四个特性(上) 一.前言 再次花时间回顾一下基础,毕竟要想楼建的好,地基就要牢固,嘻嘻! 在开始之前需要具备对prototype.__proto__.constructor ...

  4. Android必知必会-使用okhttp的PUT方式上传文件

    注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端. 背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp ...

  5. iOS 根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标

    /** * 根据圆心的坐标点.半径.当前手势所在的坐标点,计算出圆的运动轨迹坐标 * @param radius 圆心半径 * @param centerCircle 圆心的坐标点 * @param ...

  6. 【android】模拟点击某个指定坐标作用在View上

    /** * 模拟点击某个指定坐标作用在View上 * @param view * @param x * @param y */ public void clickView(View view,floa ...

  7. 已知直线上的两点 A(x1, y1), B(x2, y2) 和另外一点 C(x0, y0),求C点到直线的距离。

    数学知识太差,一点点积累,高手勿喷. 1. 先求出AB向量 a = ( x2-x1, y2-y1 ) 2. 求AB向量的单位方向向量 b = √((x2-x1)^2 + (y2-y1)^2)) a1 ...

  8. 2020-06-22:已知两个非负数的异或值为M,两数之和为N,求这两个数?

    福哥答案2020-06-22: 1.遍历法时间复杂度:O(N)最好空间复杂度:O(1)平均空间复杂度:O(sqrt(N))最坏空间复杂度:O(N)[0,N/2]依次遍历,符合条件的就是需要的结果. 2 ...

  9. 求空间内两条直线的最近距离以及最近点的坐标(C++)

    关键词:空间几何 用途:总有地方会用到吧 文章类型:C++函数展示 @Author:VShawn(singlex@foxmail.com) @Date:2016-11-19 @Lab: CvLab20 ...

随机推荐

  1. 2w+长文带你剖析ConcurrentHashMap~!

    并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap ...

  2. 源码分析:升级版的读写锁 StampedLock

    简介 StampedLock 是JDK1.8 开始提供的一种锁, 是对之前介绍的读写锁 ReentrantReadWriteLock 的功能增强.StampedLock 有三种模式:Writing(读 ...

  3. Maximum execution time of 30 seconds exceeded in

    在执行一次php脚本的时候,遇到了这样的报错,经过c Maximum execution time of 30 seconds exceeded in 翻译过来就是:执行时间超过了30秒最长执行时间: ...

  4. bootstrap-datetimepicker的两种版本

    1.引入js/css <link rel="stylesheet" th:href="@{/plugin/bootstrap-datetimepicker/boot ...

  5. 图像分割必备知识点 | Dice损失 理论+代码

    本文包含代码案例和讲解,建议收藏,也顺便点个赞吧.欢迎各路朋友爱好者加我的微信讨论问题:cyx645016617. 在很多关于医学图像分割的竞赛.论文和项目中,发现 Dice 系数(Dice coef ...

  6. 使用ABBYY FineReader 14查看和编辑PDF

    使用ABBYY FineReader,您可以轻松查看和编辑任何类型的 PDF,以及在其中添加注释和进行搜索,即使这些 PDF 是从扫描纸质文档生成.因而不包含任何可疑搜索或编辑的文本.是一款名副其实的 ...

  7. css3系列之@font-face

    @font-face 这个属性呢,必须设置在 css的根下,也就是说,不能设置在任何元素里面. @font-face: 参数: font-family:  给这个文字库 起个名字. src: url( ...

  8. css3系列之详解border-image

     border-image border-image呢,是给 边框加上背景图片的.没错,就是平常那一小小条的边框,也能加图片. 参数: border-image-source border-image ...

  9. 实时检测微信域名防红拦截检测API系统,最新腾讯域名屏蔽检测官方接口

    最近手里有个项目需要检测域名在微信里是否可以打开,如果被微信拦截,则需要进行下一步操作,所以需要判断域名的状态,但是微信官方并没有提供相关查询的方法,最后在网上找到了这个接口地址,分享给有需要的朋友. ...

  10. 本地VM安装虚拟机,使用xshell连接

    首先把VM设置成上面那样 在ubuntu里面安装ssh apt-get install openssh-server 启动服务 /etc/init.d/ssh startifconfig 查看ip x ...