VC++开发GIS系统(182)剪断线之函数实现

上文《VC++开发GIS系统(181)剪断线之判断点是否在线上函数实现》实现了判断点是否在线上的函数,本文继续前文的工作实现剪断线的函数。

函数定义

在_malaBase.h中定义剪断线的函数:

bool cutLine(malaPoint point, vector<malaPoint>& Line1, vector<malaPoint>& Line2);//剪断线

参数:

  1. point 鼠标点击的点
  2. Line1 原来的线(同时返回剪断两条线之一)
  3. Line2 新产生的线

函数实现

在_malaBase.cpp中实现剪断线的函数:

/*
* 剪断线
*/
bool malaLogic::cutLine(malaPoint point, vector<malaPoint>& Line1, vector<malaPoint>& Line2)
{
    vector<malaPoint>Line;
    Line = Line1;
    int length = Line1.size();
    int pos = 0;
    bool cutflag = FALSE;
    for (int i = 1; i < length; i++)
    {
        if (isPointInLine(point, Line[i - 1], Line[i]))
        {
            pos = i;
            cutflag = TRUE;
            break;
        }
    }

    if (cutflag)
    {
        Line1.clear();
        int j;
        for (j = 0; j < pos; j++)
            Line1.push_back(Line[j]);
        Line1.push_back(point);

        Line2.push_back(point);
        for (j = pos; j < length; j++)
            Line2.push_back(Line[j]);

        return TRUE;
    }

    return FALSE;

}

其中isPointInLine函数可以参考:VC++开发GIS系统(181)剪断线之判断点是否在线上函数实现

详细代码可以参考:GitHub

VC++开发GIS系统(181)剪断线之判断点是否在线上函数实现 ArcGIS10 地理信息系统教程:从初学到精通和ArcGIS Engine 地理信息系统开发教程相关资料分享

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论