Ios 如何在两点之间得到一个点?
我正在使用UIBezierPath绘制带有两点的线(以多个角度),但我希望绘制的线比两点之间的距离短一点 我尝试使用以下代码在两点之间找到一个点: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
let x3 = x2 + 0.9 * (x1 - x2);
let y3 = y2 + 0.9 * (y1 - y2);
它在1或2个角度工作,但在其他角度失败。我怎样才能得到正确的分数?谢谢
==已编辑===
到现在为止,我从搜索中得到了一些想法,但我仍然无法让它工作
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)
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
修复了这个问题。谢谢