Php 从固定的起点到终点画一条固定长度的线

Php 从固定的起点到终点画一条固定长度的线,php,math,geometry,trigonometry,Php,Math,Geometry,Trigonometry,我被一个问题困住了。 我花了两天时间试图解决这个问题。但我不知道。 它可以是一些简单的事情,但只是我现在一无所知&任何帮助都是感激的 我想做一条从a(x1,y1)到B(x2,y2)的固定长度的线 A.............B A....B........ A............. B 我做了一个移动板球记分员。在报告中,它建造了一个车轮。 由于它是从手机上使用的,人的触摸不是很准确,人们并不总是触摸边界线(下图中的深橙色圆圈) 但是,当我用PHP生成报告时,我必须从固定的起点到边界

我被一个问题困住了。 我花了两天时间试图解决这个问题。但我不知道。 它可以是一些简单的事情,但只是我现在一无所知&任何帮助都是感激的

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

A.............B
A....B........
A.............    B
我做了一个移动板球记分员。在报告中,它建造了一个车轮。 由于它是从手机上使用的,人的触摸不是很准确,人们并不总是触摸边界线(下图中的深橙色圆圈)

但是,当我用PHP生成报告时,我必须从固定的起点到边界线在它们接触的方向上画一条线

现在我的车轮看起来像这样

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

我可以用php计算起点和接触点之间的距离

    $lineLength = round( sqrt (pow(($wicketX-$x),2) + pow(($wicketY-$y),2)), 2);
但我不知道如何进一步调整触摸坐标到所需的长度

请帮忙

另外,这个问题看起来很相似,但我明白了。我的数学是一周

我知道您想要找到通过点A和点B的线与圆的交点。A不必是中心

让圆心具有坐标
(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²

如果A是中心,AB不是“固定长度”。可能是我没有正确解释这个问题,但我无法得到正确的答案。我想在同一条线上找到一个新的点。我最后用这个公式找到了第3点<代码>代码$x3=$x2+($x2-$x1)/$lineLength*$newLineLength$y3=$y2+($y2-$y1)/$lineLength*$newLineLength;我怎样才能结束这个问题。你不喜欢我的答案吗?实际上我没有圆圈。地面呈日食状。所以我不想找到一条直线与圆的交点。我想知道直线上距离X的任何点。让直线从点(x1,y1)到(x2,y2)。我想知道(x2,y2)之前或之后这条线上的任何一点。如果您看到我在上面的评论中发布的解决方案,请使用我可以计算的$newLineLength。