10 Haziran 2020 Çarşamba

geometry convex_hull metodu

Giriş
Convex Hull belli bir nokta setinin tamamını içeren polygon'dur. Convex Hull hesaplaması için çeşitli yöntemler var. Şeklen şöyledir


Örnek
Şöyle yaparız.
bool is_convex(const polygon& convex_polygon) noexcept
{
  const auto n = convex_polygon.size();
  if(n <= 2) return false;

  auto sense = side::center;

  for(auto i = 0u; i < n; ++i)
  {
    auto new_sense = determine_side(line{convex_polygon[i], convex_polygon[(i + 2) % n]},
      convex_polygon[(i + 1) % n]);

      if(sense == side::center)
      {
        sense = new_sense;
      }
      else if(new_sense != side::center && new_sense != sense)
      {
        return false;
      }
  }

  return sense != side::center;
}

Hiç yorum yok:

Yorum Gönder