代码之家  ›  专栏  ›  技术社区  ›  serhio

找到第三点

  •  5
  • serhio  · 技术社区  · 14 年前

    我有2分 P1 P2 . 我需要找到 P3 ,以便

    • 所有点在同一条线上;
    • 第3页 应该在远处 d P2页 (远离 P1号 )

    我启动了一个复杂的系统显然很难解决。。。
    alt text

    附言。

    向量的答案很酷,但我用C,不知道如何在那里添加向量。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Ignacio Vazquez-Abrams    14 年前
    P3 = P2 + d * ±(P2 - P1) / |P2 - P1|
    

    编辑:

    因为购物很容易:

    mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2)
    P3x = P2x + d * (P2x - P1x) / mag
    P3y = P2y + d * (P2y - P1y) / mag
    
        2
  •  2
  •   Registered User    13 年前

    我已经把代码翻译成目标C

    float distanceFromPx2toP3 = 1300.0;    
    
    float mag = sqrt(pow((px2.x - px1.x),2) + pow((px2.y - px1.y),2));
    float P3x = px2.x + distanceFromPx2toP3 * (px2.x - px1.x) / mag;
    float P3y = px2.y + distanceFromPx2toP3 * (px2.y - px1.y) / mag;
    
    CGPoint  P3 = CGPointMake(P3x, P3y);
    
    推荐文章