5

这是一道几何题。

我在两点 A 和 B 之间有一条线,想把它分成 k 个相等的部分。我需要划分 A 和 B 之间的线的点的坐标。

非常感谢任何帮助。

非常感谢!

4

2 回答 2

19

您只需要 A 和 B 的加权平均值。

C(t) = A * (1-t) + B * t

或者,在二维

Cx = Ax * (1-t) + Bx * t
Cy = Ay * (1-t) + By * t    
  • 当 t=0 时,你得到 A。
  • 当 t=1 时,你得到 B。
  • 当 t=.25 时,您在从 A 到 B 的 25% 处
  • ETC

因此,要将线分成 k 个相等的部分,做一个循环并找到 C,对于 t=0/k, t=1/k, t=2/k, ... , t=k/k

于 2010-08-22T17:32:34.813 回答
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。但你的方法很有效,谢谢

于 2010-08-31T08:23:43.110 回答