ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

切割矩形,C++版

2021-05-09 18:01:39  阅读:183  来源: 互联网

标签:spliceData 切割 int blockData C++ 矩形 bx lx ly


 

#include <iostream>
#include <vector>

// 点
class Node
{
public:
    int x;
    int y;
};
// 保存每个块的左上角和右下角的坐标
class BlockData {
public:
    Node lp;
    Node rp;
};
// 分割的数据
class SpliceData
{
public:
    int cnt; // 块数
    int rowCnt;// 行快高
    int colCnt; // 列块高
    std::vector<BlockData> blocks; // 块数据,保存每个块的左上角和右下角的坐标
};

SpliceData slice_rectangle(int width, int height, int span) {
    SpliceData spliceData;
    int lx, ly, bx, by;
    lx=ly=bx=by=0;
    while (by < height) {
        by = ly + span;
        if (by > height) {
            by = height;
        }
        lx = bx = 0;
        spliceData.rowCnt++;
        spliceData.colCnt = 0;
        while (bx < width) {
            spliceData.colCnt++;
            bx = lx + span;
            if (bx > width) {
                bx = width;
            }
            BlockData blockData;
            blockData.lp.x = lx;
            blockData.lp.y = ly;
            blockData.rp.x = bx;
            blockData.rp.y = by;
            spliceData.blocks.push_back(blockData);
            lx = bx;
        }
        ly = by;
    }
    return spliceData;
}

int main()
{
    // 测切块
    DWORD t1, t2;
    t1 = GetTickCount();
    SpliceData spliceData = slice_rectangle(1920, 1080, 30);
    t2 = GetTickCount();
    std::cout << "spliceData Time:" << (t2 - t1) * 1.0 / 1000 << "\n";
    std::cout << spliceData.rowCnt << "x" << spliceData.colCnt << std::endl;
    /*for (int i = 0; i < spliceData.blocks.size();i++) {
        std::cout << "left node: " << spliceData.blocks[i].lp.x << " " << spliceData.blocks[i].lp.y << std::endl;
        std::cout << "right node: " << spliceData.blocks[i].rp.x << " " << spliceData.blocks[i].rp.y << std::endl;
        std::cout << std::endl;
    }*/
    system("PAUSE ");
}

 

标签:spliceData,切割,int,blockData,C++,矩形,bx,lx,ly
来源: https://www.cnblogs.com/hello-dummy/p/14748397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有