已知两点坐标,求直线方程、距离其中一点距离为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:43
  • 21736

高德地图---已知两点经纬度坐标求距离和角度

计算两个坐标点之间的距离function calcDistance(lonA,latA,lonB,latB) { var earthR = 6371000; var x = Math....
  • Admin_yi
  • Admin_yi
  • 2017-04-20 14:03:05
  • 4569

已知两点坐标,及在从其中一点开始移动的距离,求移动到的坐标

  • Orc_Warrior
  • Orc_Warrior
  • 2016-12-09 16:59:05
  • 197

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

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

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

总觉得代码理应是无所不能的,尤其是在复杂的计算方面。而最近一个项目,要求计算坐标点,这尼玛遇到了要解方程组的情况,还是一元二次方程组。当时整个人都不好了,上网到处搜寻,也无法找到那种可以把表达式列出来...
  • xj396282771
  • xj396282771
  • 2017-08-28 09:14:20
  • 2011

已知两点, 求直线斜率

假如两点坐标分别是(x1,y1)(x2,y2) 那么斜率是:(y2-y1)/(x2-x1) k=(y2-y1)/(x2-x1) 其中(x1,y1),(x2,y2) 是已知两点的坐标 已知A(x...
  • cay22
  • cay22
  • 2012-10-31 14:46:20
  • 5231

<em>已知两点</em>经纬度组成的<em>直线</em>_求指定距离的第三点经纬度<em>公式</em>

行距为H,第三点的经纬度为(α3,β3),向左时θ=3π/ 2,向右时θ=π/ 2 第三点:距离前述<em>已知两点</em>(A、B点)组成的<em>直线</em>段上A点的距离为H; C点存在...
  • 2018年04月18日 00:00

C++ 实现已知直线上两个点求解直线方程,并求两条直线的交点

已知点A(x1,y1)、B(x2,y2)为直线L1上两个点,点C(x3,y3)、D(x4,y4)为直线L2上两个点,求解两个直线的方程以及交点坐标,直接贴代码 //定义Point2f结构体 struc...
  • sinat_31425585
  • sinat_31425585
  • 2017-07-11 13:52:36
  • 2044

已知直线上的两点 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 ...
  • hhhh63
  • hhhh63
  • 2014-05-05 11:14:25
  • 2759
收藏助手
不良信息举报
您举报文章:已知两点坐标,求直线方程、距离其中一点距离为L的某点
举报原因:
原因补充:

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