已知两点坐标,求直线方程、距离其中一点距离为L的某点
总觉得代码理应是无所不能的,尤其是在复杂的计算方面。而最近一个项目,要求计算坐标点,这尼玛遇到了要解方程组的情况,还是一元二次方程组。当时整个人都不好了,上网到处搜寻,也无法找到那种可以把表达式列出来,就给你解出来的方法。不过还好,网友的一些代码给了我不少的启发,于是摸出难得一用的纸笔,老老实实在草稿纸上演算,最终有了以下代码:
private void pointXY() {Point curPoint = new Point(20, 30);// 当前坐标Point nextPoint = new Point(35, 42);// 下个点坐标double distance = Math.sqrt(Math.pow(curPoint.x - nextPoint.x, 2)+ Math.pow(curPoint.y - nextPoint.y, 2));// 两点的坐标距离double lenthUnit = distance / 5;// 单位长度// 第一步:求得直线方程相关参数y=kx+bdouble k = (curPoint.y - nextPoint.y) * 1.0/ (curPoint.x - nextPoint.x);// 坐标直线斜率kdouble b = curPoint.y - k * curPoint.x;// 坐标直线b// 第二步:求得在直线y=kx+b上,距离当前坐标距离为L的某点// 一元二次方程Ax^2+Bx+C=0中,// 一元二次方程求根公式:// 两根x1,x2= [-B±√(B^2-4AC)]/2A// ①(y-y0)^2+(x-x0)^2=L^2;// ②y=kx+b;// 式中x,y即为根据以上lenthUnit单位长度(这里就是距离L)对应点的坐标// 由①②表达式得到:(k^2+1)x^2+2[(b-y0)k-x0]x+[(b-y0)^2+x0^2-L^2]=0double A = Math.pow(k, 2) + 1;// A=k^2+1;double B = 2 * ((b - curPoint.y) * k - curPoint.x);// B=2[(b-y0)k-x0];int m = 1;double L = m * lenthUnit;// C=(b-y0)^2+x0^2-L^2double C = Math.pow(b - curPoint.y, 2) + Math.pow(curPoint.x, 2)- Math.pow(L, 2);// 两根x1,x2= [-B±√(B^2-4AC)]/2Adouble x1 = (-B + Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);double x2 = (-B - Math.sqrt(Math.pow(B, 2) - 4 * A * C)) / (2 * A);double x = 0;// 最后确定是在已知两点之间的某点if (x1 == x2) {x = x1;} else if (curPoint.x <= x1 && x1 <= nextPoint.x || nextPoint.x <= x1&& x1 <= curPoint.x) {x = x1;} else if (curPoint.x <= x2 && x2 <= nextPoint.x || nextPoint.x <= x2&& x2 <= curPoint.x) {x = x2;}double y = k * x + b;Point mPoint = new Point((int) x, (int) y);
}
已知两点坐标,求直线方程、距离其中一点距离为L的某点相关推荐
- 已知两点坐标求直线的一般表达式
假设有两个点x1,y1,x2,y2 一般式Ax+By+C=0 A=y2-y1 B=x1-y2 g=__gcd(A,B); A/=g,B/=g 那么C就 C=-(Ax+By) 随便带一个点进去就好了 转 ...
- 转 已知两点坐标和半径求圆心坐标程序C++
数学思想:利用圆方程和直线方程 已知两点坐标和半径求圆心坐标程序 #include <iostream> #include <fstream> #include <cma ...
- 已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- python坐标表示_已知经纬度坐标求两点间距离,用python表示
已知经纬度坐标求两点间距离,用python表示 已知地球上任意两点(lon1, lat1),( lon2, lat2)的经纬度坐标,求两点间的距离用haversine表示: 1.首先先将经纬度坐标的角 ...
- 已知两点,求两点与原点连线的角度
/* 怎么求夹角:已知两点坐标要求其到原点连线的夹角, 那么我们可以用向量去做, 用向量的积除以向量模的乘积,在求其反函数, 然后转换为角度就可以知道其角度为多少了: 向量的模的乘积怎么算: sqrt ...
- 已知两点坐标拾取怎么操作_已知的操作员学习-第4部分
已知两点坐标拾取怎么操作 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU's ...
- 已知两点坐标拾取怎么操作_已知的操作员学习-第3部分
已知两点坐标拾取怎么操作 有关深层学习的FAU讲义 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU's ...
- python3 已知两点坐标算角度
import mathdef azimuthangle(x1, y1, x2, y2):""" 已知两点坐标计算角度 -:param x1: 原点横坐标值:param y ...
- 关于已知两点经纬度求球面最短距离的公式推导
已知两点经纬度计算球面距离的公式,一搜一大堆,形式如下: 可是至于这个公式为什么是这样的,今天推导了一下,详细推导过程如下.首先画个图(图1),要不然空间想象能力差的话容易犯糊涂.首先对图1做个大致的 ...
最新文章
- 跨编译单元之初始化次序
- java扫描注解_使用Spring Java注释扫描
- Windows 技巧篇-电脑蓝光过滤,颜色校准调节蓝光,电脑源头过滤蓝光,保护眼睛,护眼软件原理
- maven插件编写_编写Maven插件的提示
- 解决计算治理问题,详解微众银行大数据平台中间件Linkis架构和应用
- Qt调用jrtplib实现单播、多播和广播
- idea设置主题路径
- 部分格式文件解释以及万能文件查看器下载
- linux编译一直失败,linux编译安装时常见错误解决办法
- 有一个函数y=x(x「1),y=2x-1(1「=x「10),y.=3x-11(x」=10)。写一段程序,输入x,输出y值
- poco mysql 编译_Poco介绍及编译
- 成都博兰科技有限公司助宝兰网进入云贵川渝市场 www.beylai.com
- 网络运维网管解决方案
- 超星/智慧树 网课答案查询 高正确率
- 关于iPad上百度网盘中压缩包下载不能找到的问题
- POJ - 3067
- Hash算法解决冲突的方法
- 小红书api_【实习精选】oppo、小红书等名企实习汇总(96)
- 多线程系列学习:ABA问题
- 一个好的 ERP 系统需要具备哪些功能模块?