麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

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

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)