找到'平均'矢量形状?

时间:2013-02-06 13:31:05

标签: algorithm

我有100个相似的形状(简单的矢量图形)。如何找到所有100个实例的“平均/合并”形状?

感谢, 你

1 个答案:

答案 0 :(得分:2)

算法提案

  1. 计算每个形状的区域{A}。

  2. 找到大多数点{N}的形状{S}(你最终会得到一个N边多边形)

  3. 将{S}与其他形状合并,并创建第一个合并的{M}形状。然后将{M}与剩余的其他形状合并。 {M}将在每次与其他形状合并时进行动态/重写/更改。


  4. 合并功能伪代码
    首先调用Merge({S}, {S2}),然后为其余形状调用Merge({M}, {S2})

    参数:
    {S1} =具有最多点的形状;
    {S2} =要合并的形状;

    function Merge({S1}, {S2}):    
    
    FOR EACH {point} of {S1} DO
        {near}=find nearest {S2}{point}
        {size}=( SQRT({S1}{A}) + SQRT({S2}{A}) )/2
        {line}=create line starting at {near}, going to/over {point} of length {size}
        add point in {M} with position at half the {line}
    END FOR
    RETURN {M}
    ;
    

    3个初始形状:矩形,三角形,7边多边形 {S} =绿色
    3shapes

    将绿色与矩形合并 {M} =蓝色
    merge1

    将蓝色与三角形合并 {M} =黄色< -final结果 final

    注意:合并的形状不是按比例的!没有占地区!