Ios 如何在两点之间得到一个点?

Ios 如何在两点之间得到一个点?,ios,swift,uibezierpath,Ios,Swift,Uibezierpath,我正在使用UIBezierPath绘制带有两点的线(以多个角度),但我希望绘制的线比两点之间的距离短一点 我尝试使用以下代码在两点之间找到一个点: let x3 = x2 + 0.9 * (x1 - x2); let y3 = y2 + 0.9 * (y1 - y2); 它在1或2个角度工作,但在其他角度失败。我怎样才能得到正确的分数?谢谢 ==已编辑=== 到现在为止,我从搜索中得到了一些想法,但我仍然无法让它工作 得到两点之间的距离,然后减去15,因为我希望它更短 let distanc

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

我尝试使用以下代码在两点之间找到一个点:

let x3 = x2 + 0.9 * (x1 - x2);
let y3 = y2 + 0.9 * (y1 - y2);
它在1或2个角度工作,但在其他角度失败。我怎样才能得到正确的分数?谢谢

==已编辑===

到现在为止,我从搜索中得到了一些想法,但我仍然无法让它工作

  • 得到两点之间的距离,然后减去15,因为我希望它更短

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

    let angle = (p2.y - p1.y) / (p2.x - p1.x)
    
  • 使用距离和角度获取点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))
    

    您的代码计算连接(x1,y1)和(x2,y2)的线上的一个点(x3,y3)。一个你认为失败的具体例子(输入、预期输出和实际输出)会有帮助。这是一个数学问题。你停下来把它画在纸上了吗?有不同的方式来看待它。例如,您可以检查以下内容:@MartinR I发布了一些新代码,只是不知道这是否正确。@jdleung:您的原始代码有什么问题?这肯定比你添加的代码更好。@MartinR
    atan2
    修复了这个问题。谢谢