我遇到了问题。 我试图解决它2天。但我很无能为力。 它可以是简单的东西但是我现在一无所知任何帮助表示赞赏。
我想从A(x1,y1)到固定长度的B(x2,y2)做一条线。
A.............B
A....B........
A............. B
我已成为一名移动板球得分手。在报告中,它建立了一个马车车轮。 由于它是从移动设备上使用的,人类触摸不是很准确,人们并不总是触摸边界线(下图中的深橙色圆圈)。
但是当我在PHP中生成报告时,我必须在固定的起点到边界线的一条线上画出一条线。
现在我的WAGON WHEEL看起来像这样。
我已经尝试了很多方法来实现这一目标,但都失败了。现在我的下一个想法是从固定起点(击球侧)到触摸坐标绘制一条固定长度的线,但是固定长度,以便线无论用户是否总是在边界线处结束。触摸不准确。
我可以在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
答案 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²