从固定的起点到终点

时间:2015-08-03 05:51:33

标签: php math geometry trigonometry

我遇到了问题。 我试图解决它2天。但我很无能为力。 它可以是简单的东西但是我现在一无所知任何帮助表示赞赏。

我想从A(x1,y1)到固定长度的B(x2,y2)做一条线。

A.............B
A....B........
A.............    B

我已成为一名移动板球得分手。在报告中,它建立了一个马车车轮。 由于它是从移动设备上使用的,人类触摸不是很准确,人们并不总是触摸边界线(下图中的深橙色圆圈)。

但是当我在PHP中生成报告时,我必须在固定的起点到边界线的一条线上画出一条线。

现在我的WAGON WHEEL看起来像这样。

enter image description here

我已经尝试了很多方法来实现这一目标,但都失败了。现在我的下一个想法是从固定起点(击球侧)到触摸坐标绘制一条固定长度的线,但是固定长度,以便线无论用户是否总是在边界线处结束。触摸不准确。

我可以在php

中使用它来计算起点和触点之间的距离
    $lineLength = round( sqrt (pow(($wicketX-$x),2) + pow(($wicketY-$y),2)), 2);

但我不知道如何通过触摸坐标进一步调整到所需的长度

请帮助。

P.S。这个问题看起来很相似,但我想出来了。我的数学是一周 Calculate a point along the line A-B at a given distance from A

1 个答案:

答案 0 :(得分:0)

我知道你想通过圆圈找到通过A点和B点的线的交点。不需要成为中心。

让圆心具有坐标(Xc, Yc),半径为R

沿AB的任何一点都可以写成

X = Xa + t (Xb - Xa) = Xc + (Xa - Xc) + t (Xb - Xa) = Xc + Xca + t Xab
Y = Ya + t (Yb - Ya) = Yc + (Ya - Yc) + t (Yb - Ya) = Yc + Yca + t Yab

你将其插入圆圈方程

(X - Xc)² + (Y - Yc)² - R² = (Xca + t Xab)² + (Yca + t Yab)² - R² 
                           = (Xab² + Yab²) t² + 2 (Xca Xab + Yca Yab) t + Xca² + Yca² - R²
                           = 0

这是您需要为t求解的二阶方程。使用积极t的解决方案,它位于B的一侧。从t开始,计算(X, Y)

请注意,如果A是中心,则该等式通常会减少到

(Xab² + Yab²) t² = R²