我在二维平面图上有一组点(std::pair
of double
),我想应用一个掩码(这是一个封闭的轮廓:正方形, 圆形, 多边形...) 到它。 如果一个点包含在掩码内(或在掩码下),则不出现,否则出现。
例如,如果蒙版是一个矩形,其左上角的坐标为 (m_x,m_y)
,m_width
和 m_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 方法。
编辑
我不知道有什么标准方法可以做到这一点,但实现起来很简单:
http://www.codeproject.com/Tips/84226/Is-a-Point-inside-a-Polygon
关于c++ - C++/Qt 中的闭合轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299662/