Geometry 等分分割线

Geometry 等分分割线,geometry,line,data-partitioning,Geometry,Line,Data Partitioning,这是一个几何问题 在a点和B点之间有一条线,我想把它分成k等分。我需要A和B之间分割线的点的坐标 非常感谢您的帮助 非常感谢 您只需要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=0.25时,从a到B的距离为25% 等 所以,要把线分成k等分,做一个循环,找到C,对于t=0/k,t=1/k,t=2

这是一个几何问题

在a点和B点之间有一条线,我想把它分成k等分。我需要A和B之间分割线的点的坐标

非常感谢您的帮助


非常感谢

您只需要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=0.25时,从a到B的距离为25%
所以,要把线分成k等分,做一个循环,找到C,对于t=0/k,t=1/k,t=2/k,t=k/k

    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);
    }
这看起来不错,但我的程序不起作用:D。 但是你的方法很有效,谢谢你可能想用“i”
[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)