2016-05-16 63 views
0

我确定这是基本的三角学,我敢打赌我多年前就读于学校,但我很困惑知道应用于真实世界的功能的功能。不管怎么说,而不是试图解释什么,我需要帮助,我画一个小图:如何在现有的线路上找到两个点

enter image description here

我知道P1,P2,R1和R2,但我不记得(或不知道如何搜索)如何计算p3和p4是什么。

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

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

+0

我投票关闭这一问题作为题外话,因为它是关于[math.se]而不是编程或软件开发。 – Pang

+0

这不是主题,我有一个非常好的理由,为什么我在这里发布而不是数学交换委员会。 上下文旨在用于JavaScript实现。如果我在数学交换中写过这样的要求,我会用数学符号得到用方程表达的答案。我不知道如何实现答案。通过在此处提问,我会确保它以代码表示法表示。 我排除了我使用哪种语言的信息,因为它是无关紧要的。 我认为人们离开的答案会对其他在JS中遇到这个数学问题的人有用。 – jayfield1979

回答

1

  1. P1创建单元矢量vP2方向

    即容易以矢量形式:

    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. 现在,通过r1,r2

    矢量形式从P1,P2只是翻译:

    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; 
    

enter image description here

+0

感谢您的时间(以及您的图表)。我选择了你的答案,因为我在矢量匹配中工作得更好,而且我正在使用基于矢量的系统来绘制图形。 – jayfield1979

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

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

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

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

一旦线公式存在,您可以应用x的值并计算点P3的y,例如可以说x3和y3,因为您有半径R1。同样,计算P4的坐标。

+0

谢谢你的时间,你能否澄清公式第二部分'c'是什么:'y = mx + c'?谢谢。 – jayfield1979

+0

@ jayfield1979当距离标准线方程的'x = 0'(线偏移)时,它是'y'位置的线。这种方法对于垂直线不起作用,并且在| | dy | >> | dx |'的情况下将失去准确性。矢量和/或参数化方法对此更好 – Spektre

1

设D为P1(X1,Y1)和p2之间
因此 d = SQRT的距离(X2,Y2)((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)*×2)/ d和
Y4 =(R2 * Y1 +(d-R2)* Y2)/ d,这是简单的矢量运算(没有三角需要)

相关问题