c++ - C++/Qt 中的闭合轮廓

标签 c++ qt

我在二维平面图上有一组点(std::pair of double),我想应用一个掩码(这是一个封闭的轮廓:正方形, 圆形, 多边形...) 到它。 如果一个点包含在掩码内(或在掩码下),则不出现,否则出现。

例如,如果蒙版是一个矩形,其左上角的坐标为 (m_x,m_y)m_widthm_height 它的宽度和高度,一个点将包含在掩码中(并且不应该出现)如果:

if (x >= m_x && x <= m_x + m_width && y >= m_y && y <= m_y + m_height) 
        return true;

对于简单的形状(矩形、圆形)来说并没有那么难,但是你会怎么做/你会用什么来考虑更难的形状,比如多边形? Qt (5.6) 是这样做的吗?或者我应该使用 OpenCv 之类的东西吗?

编辑 1

Qt 可以使用 QPolygonF 类来做到这一点(感谢 Aurélien)但是你知道 std 是否正在这样做吗?除了 std,我们在没有任何其他库的情况下实现了我们的数据库,如果我们可以继续,那就太好了,如果不能,那也不是问题。

最佳答案

您可以使用 QPolygonF 类。

有一个 QPolygonF::containsPoint 方法。

编辑

我不知道有什么标准方法可以做到这一点,但实现起来很简单:

Point in Polygon Algorithm

http://www.codeproject.com/Tips/84226/Is-a-Point-inside-a-Polygon

关于c++ - C++/Qt 中的闭合轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299662/

相关文章:

c++ - 如何在基于 C++/QT 的安装程序中检测互联网断开连接

c++ - glBlitFramebuffer 无效操作

c++ - 使用 for_each 调用成员函数

c++ - 在 Linux 中查找函数签名

c++ - STM32F103C8T6使用C++字符串std

c++ - Qt 中的 2D 游戏 : Initializing monsters and passing dynamically allocated array as a pointer parameter

c++ - QOpenGLWidget 的makeCurrent 不起作用?

c++ - Qt 告诉我我的 SLOT 不存在,但是通过 make clean,让它不再提示

html - 在桌面图形化独立应用程序中嵌入 Dart VM

c++ - 实现字符串(城市)图的最简单方法是什么?