如何沿现有线找到两个点

时间:2016-05-16 08:46:13

标签: math geometry trigonometry points

我确信这是基本的三角函数,我打赌我多年前在学校报道,但我很难知道什么函数适用于现实世界的情况。无论如何,我没有尝试解释我需要帮助的内容,而是绘制了一个小图:

enter image description here

我知道p1,p2,r1和r2但是我不记得(或者知道如何搜索)如何计算出p3和p4是什么。

这个设置的基本应用是我有2个圆圈(红色和蓝色),我需要它们不断连接,因为我将它们拖到画布上。粉红色链接将通过它们的中心点连接它们,但我不希望线条穿透圆圈的圆周。

希望有道理吗?提前谢谢。

4 个答案:

答案 0 :(得分:1)

您必须解决以下等式系统:

对于p3 - >

(X-p1x)/(p1x-p2x)=(Y-p1y)/(p1y-p2y)
(X-p1x)^2 + (Y-p1y)^2 = r1^2

对于p4,相同的是在第二个等式中将r1改为r2,将p1改为p4。

第一个等式是给出2个点的线的等式。 第二个等式是给定中心点和半径的圆的方程。

得到的X,Y值将是p3的值,然后是p4。

答案 1 :(得分:1)

我要说的有点长。我会让你编写自己的代码,但是,当然无法帮助你。

您知道点P1,P2和半径R1和R2。假设点P1和P2分别具有坐标(x1,y1)和(x2,y2)。

连接P1和P2的直线是直线,因此您可以使用公式m=(y2-y1)/(x2-x1)计算直线的斜率。由于您知道斜率并知道两个坐标,因此可以计算截距c并构造形式y=mx+c的公式。

一旦行公式存在,您可以应用x的值并计算点P3的y,假设您具有半径R1,则说x3和y3。同样,计算P4的坐标。

答案 2 :(得分:1)

令d为p1(x1,y1)和p2(x2,y2)之间的距离 从而 d = sqrt((x1-x2)^ 2 +(y1-y2)^ 2)
现在点p3(x3,y3)以r1的比例划分p1和p2之间的直线:(d-r1)

因此
x3 =(r1 * x2 +(d-r1)* x1)/ d和
y3 =(r1 * y2 +(d-r1)* y1)/ d

类似于p4(x4,y4)
x4 =(r2 * x1 +(d-r2)* x2)/ d和
y4 =(r2 * y1 +(d-r2)* y2)/ d

答案 3 :(得分:1)

这是简单的矢量数学(不需要三角学)

  1. 创建单位向量v P1P2方向

    矢量形式很简单:

    v=P2-P1; v/=|v|
    

    当放入 2D

    v.x=P2.x-P1.x;
    v.y=P2.y-P1.y;
    l=sqrt((v.x*v.x)+(v.y*v.y))
    v.x/=l;
    v.y/=l;
    
  2. 现在只需P1,P2翻译r1,r2

    矢量形式:

    P3=P1+r1*v
    P4=P2-r2*v
    

    2D

    P3.x=P1.x+r1*v.x;
    P3.y=P1.y+r1*v.y;
    P4.x=P2.x-r2*v.x;
    P4.y=P2.y-r2*v.y;
    
  3. enter image description here