已知两点坐标,求直线方程、距离其中一点距离为L的某点

原创 2017年08月28日 09:14:20

         总觉得代码理应是无所不能的,尤其是在复杂的计算方面。而最近一个项目,要求计算坐标点,这尼玛遇到了要解方程组的情况,还是一元二次方程组。当时整个人都不好了,上网到处搜寻,也无法找到那种可以把表达式列出来,就给你解出来的方法。不过还好,网友的一些代码给了我不少的启发,于是摸出难得一用的纸笔,老老实实在草稿纸上演算,最终有了以下代码:

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+b
		double k = (curPoint.y - nextPoint.y) * 1.0
				/ (curPoint.x - nextPoint.x);// 坐标直线斜率k
		double 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]=0
		double 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^2
		double C = Math.pow(b - curPoint.y, 2) + Math.pow(curPoint.x, 2)
				- Math.pow(L, 2);
		// 两根x1,x2= [-B±√(B^2-4AC)]/2A
		double 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);
}


已知直线上两点求直线的一般式方程

一般式方程在计算机领域的重要性 常用的直线方程有一般式 点斜式 截距式 斜截式 两点式等等。除了一般式方程,它们要么不能支持所有情况下的直线(比如跟坐标轴垂直或者平行),要么不能支持所有情况下的点(...
  • madbunny
  • madbunny
  • 2015年02月26日 20:15
  • 20302

已知两点经纬度,求一点相对于另一点方位角和两点间的距离

如上图所示,我们已经知道点A(Lng1,Lat1)和点B(Lng2,Lat2)的经纬度,所以有 ∠AOE =Lat1, ∠BOF=Lat2, ∠EOF=Lng2-Lng1.现在我们要求B点相对于A点...
  • u014531567
  • u014531567
  • 2017年04月25日 21:46
  • 902

GIS算法--已知一点经纬度,方位角,距离求另一点

已知一个点A的经纬度坐标,点B相对与A的方位角,B到A的距离,求B的经纬度坐标,用Javascript语言来完成该算法,借用了一下openL CommonFunc.caculate={ ...
  • pyx61198
  • pyx61198
  • 2016年08月24日 10:44
  • 3050

GPS两点的距离

目前手头的一个项目要用到GPS地理定位信息,很自然的就需要知道两个地点之间的距离,于是上网找了一下,同样自然的就有一些算法贴出来。。(网络真是帮了大忙,省得我再去翻几何书自己研究算法了!公式早都忘光了...
  • chary8088
  • chary8088
  • 2013年12月18日 21:21
  • 4395

已知一点经纬度,方位角,距离,求另一点经纬度

参考了博文:http://blog.csdn.net/pyx6119822/article/details/52298037 -------------------------------------...
  • zengmingen
  • zengmingen
  • 2017年03月30日 17:28
  • 2385

OPENCV 两点之间的操作

#include #include #include #include "cxcore.h" #include #include using namespace std; ...
  • u012767067
  • u012767067
  • 2014年02月18日 11:22
  • 6643

已知圆外一点,圆心和半径,求过圆外点的直线与圆的切点算法

CPoint CalcQieDian(CPoint ptCenter, CPoint ptOutside, double dbRadious) { struct point {double...
  • hekejun19861107
  • hekejun19861107
  • 2013年10月22日 10:37
  • 2297

《PCL点云库学习&VS2010(X64)》Part 30 空间中求一点到两点所构成的直线的距离

《PCL点云库学习&VS2010(X64)》Part 30 空间中求一点到两点所构成的直线的距离 参考1 最近在做叶面重建的工作,构建叶面TIN的算法中会用到3维中点到直线的距离方程,一开始以为像...
  • sinat_24206709
  • sinat_24206709
  • 2017年04月19日 11:41
  • 917

分享几个Qt界面绘图时使用到的坐标计算算法

////////////////////////////////////////////////////////////////////////// // 已知屏幕坐标系上两点,且这两点不在的x坐标不...
  • chenxipu123
  • chenxipu123
  • 2015年12月22日 15:21
  • 3632

根据两点经纬度坐标计算距离

问题提出目前手头的一个项目要用到GPS地理定位信息,很自然的就需要知道两个地点之间的距离,于是上网找了一下。背景知识这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地...
  • gatieme
  • gatieme
  • 2015年05月09日 11:23
  • 7987
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:已知两点坐标,求直线方程、距离其中一点距离为L的某点
举报原因:
原因补充:

(最多只允许输入30个字)