如何获得两点之间的点?

How to get a point between two points?

我正在使用 UIBezierPath 绘制带有两个点的线(以多个角度),但我想绘制比两点之间的距离短一点的线。

我尝试了以下代码来找到两点之间的一个点:

let x3 = x2 + 0.9 * (x1 - x2);
let y3 = y2 + 0.9 * (y1 - y2);

它在 1 或 2 个角度有效,但在其他角度无效。我怎样才能得到正确的点?谢谢。

=== 已编辑 ===

现在我从搜索中得到了一些想法,但我仍然无法实现它

  1. 得到两点之间的距离,然后负15,因为我要短一点

    let distance = sqrt(pow((p2.x - p1.x), 2) + pow((p2.y - p1.y), 2)) - 15
    
  2. 获取直线角度:

    let angle = (p2.y - p1.y) / (p2.x - p1.x)
    
  3. 获取点 3 的距离和角度:

    let x = p1.x + (distance * cos(angle))
    let y = p1.y - (distance * sin(angle))
    

是角度错误的问题,函数atan2给出了正确的角度值。现在整个代码工作完美。

let angle = atan2((p2.y - p1.y), (p2.x - p1.x))