khidigis 发表于 2008-6-23 10:06:00

如何绘制河道中心线

<p>想用lisp语言写一个自动绘制河道中心线的小程序(河道水边线为两条多段线)</p><p>在网上没找到相关的一些参考,在这里把自己的想法写出来,望高手指点算法这块.</p><p>目标:获取第一条水边线(PL1)顶点到第二条水边线边(PL2)的垂线中点或连线中点,各中点的连线既作为河道中心线.</p><p>步骤:</p><p>1\取两条水边线的起点直接连接取中点,作为河道中心线的起点,置于中心线顶点列表(ML)</p><p>2\获取PL1的第i个顶点pt(初始i为2),是最后一点则跳到步骤6</p><p>3\求pt到PL2各线段的垂足f,如f不为空且垂足到顶点pt的连线与两条水边线各只有一个交点,则将垂足f置于列表list,</p><p>4\计算列表list中最小垂线min1(顶点pt到垂足f),计算pt到PL2的最短连线min2,列表list为空或min1&gt;min2,则取min2的中点作为顶点pt对应的河道中心线顶点置于顶点列表(ML),min1&lt;min2,则取min1的中点作为顶点pt对应的河道中心线顶点置于顶点列表(ML)</p><p>5\获取PL1下一个顶点(i累加1),返回步骤2</p><p>6\取两条水边线的终点直接连接取中点,作为河道中心线的终点,置于中心线顶点列表(ML)</p><p>7\pline绘制列表ML</p><p>在河道转弯、宽度突变等特殊情况下,上面思路绘制时会出现问题,希望高手在算法上给于帮助,谢谢<br/></p><p></p>
页: [1]
查看完整版本: 如何绘制河道中心线