【问题标题】:Closed contour in C++/QtC++/Qt 中的闭合轮廓
【发布时间】:2016-09-14 22:38:04
【问题描述】:

我在 2D 平面上有一组点(std::pairdouble),我想对其应用一个蒙版(这是一个封闭的轮廓:正方形、圆形、多边形......)。 如果一个点包含在掩码中(或掩码下),则不出现,否则出现。

例如,如果掩码是一个矩形,其左上角坐标为(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,如果我们可以继续,那就太好了,如果不是,这不是问题。

【问题讨论】:

  • 不,C++ 标准库不包含任何几何基元。

标签: c++ qt


【解决方案1】:

您可以使用 QPolygonF 类。

有一个 QPolygonF::containsPoint 方法。

编辑

我不知道任何标准方法可以做到这一点,但它很容易实现:

Point in Polygon Algorithm

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

【讨论】:

猜你喜欢
  • 2015-06-04
  • 2023-03-18
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多