这是一个几何问题。
我在两个点A和B之间有一条线,并希望将它分成k个相等的部分。我需要分割A和B之间的线的点的坐标。
非常感谢任何帮助。
非常感谢!
答案 0 :(得分:11)
您只需要A和B的加权平均值。
C(t) = A * (1-t) + B * t
或者,在二维
中Cx = Ax * (1-t) + Bx * t
Cy = Ay * (1-t) + By * t
因此,要将线分成k个相等的部分,做一个循环并找到C,对于t = 0 / k,t = 1 / k,t = 2 / k,...,t = k / k < / p>
答案 1 :(得分:1)
for(int i=0;i<38;i++)
{
Points[i].x = m_Pos.x * (1 - (i/38.0)) + m_To.x * (i / 38.0);
Points[i].y = m_Pos.y * (1 - (i/38.0)) + m_To.y * (i / 38.0);
if(i == 0 || i == 37 || i == 19) dbg_msg("CLight","(%d)\nPos(%f,%f)\nTo(%f,%f)\nPoint(%f,%f)",i,m_Pos.x,m_Pos.y,m_To.x,m_To.y,Points[i].x,Points[i].y);
}
打印:
[4c7cba40][CLight]: (0)
Pos(3376.000000,1808.000000)
To(3400.851563,1726.714111)
Point(3376.000000,1808.000000)
[4c7cba40][CLight]: (19)
Pos(3376.000000,1808.000000)
To(3400.851563,1726.714111)
Point(3388.425781,1767.357056)
[4c7cba40][CLight]: (37)
Pos(3376.000000,1808.000000)
To(3400.851563,1726.714111)
Point(3400.851563,1726.714111)
看起来很好但是我的程序不起作用:D。 但是你的方法很有效,谢谢