当前位置: 首页>>代码示例>>C++>>正文


C++ OZBoundary类代码示例

本文整理汇总了C++中OZBoundary的典型用法代码示例。如果您正苦于以下问题:C++ OZBoundary类的具体用法?C++ OZBoundary怎么用?C++ OZBoundary使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了OZBoundary类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: assert

void
StartPoint::find_best_start(const AircraftState &state,
                            const OrderedTaskPoint &next,
                            const TaskProjection &projection)
{
  /* check which boundary point results in the smallest distance to
     fly */

  const OZBoundary boundary = next.GetBoundary();
  assert(!boundary.empty());

  const auto end = boundary.end();
  auto i = boundary.begin();
  assert(i != end);

  const GeoPoint &next_location = next.GetLocationRemaining();

  GeoPoint best_location = *i;
  fixed best_distance = ::DoubleDistance(state.location, *i, next_location);

  for (++i; i != end; ++i) {
    fixed distance = ::DoubleDistance(state.location, *i, next_location);
    if (distance < best_distance) {
      best_location = *i;
      best_distance = distance;
    }
  }

  SetSearchMin(SearchPoint(best_location, projection));
}
开发者ID:henrik1g,项目名称:XCSoar,代码行数:30,代码来源:StartPoint.cpp

示例2:

OZBoundary
FAISectorZone::GetBoundary() const
{
  OZBoundary boundary;
  boundary.push_front(GetSectorEnd());
  boundary.push_front(GetSectorStart());
  boundary.push_front(GetReference());
  return boundary;
}
开发者ID:StefanL74,项目名称:XCSoar,代码行数:9,代码来源:FAISectorZone.cpp

示例3: GetRadius

OZBoundary
SectorZone::GetBoundary() const
{
  OZBoundary boundary;

  boundary.push_front(GetReference());
  boundary.push_front(GetSectorStart());
  boundary.push_front(GetSectorEnd());

  boundary.GenerateArcExcluding(GetReference(), GetRadius(),
                                GetStartRadial(), GetEndRadial());

  return boundary;
}
开发者ID:Tjeerdm,项目名称:XCSoarDktjm,代码行数:14,代码来源:SectorZone.cpp

示例4: vector

OZBoundary
CylinderZone::GetBoundary() const
{
  OZBoundary boundary;

  const unsigned steps = 20;
  const Angle delta = Angle::FullCircle() / steps;

  GeoVector vector(GetRadius(), Angle::Zero());
  for (unsigned i = 0; i < steps; ++i, vector.bearing += delta)
    boundary.push_front(vector.EndPoint(GetReference()));

  return boundary;
}
开发者ID:CnZoom,项目名称:XcSoarPull,代码行数:14,代码来源:CylinderZone.cpp

示例5: inner_vector

OZBoundary
AnnularSectorZone::GetBoundary() const
{
  OZBoundary boundary;

  const unsigned steps = 20;
  const Angle delta = Angle::FullCircle() / steps;
  const Angle start = GetStartRadial().AsBearing();
  Angle end = GetEndRadial().AsBearing();
  if (end <= start + Angle::FullCircle() / 512)
    end += Angle::FullCircle();

  const GeoPoint inner_start =
    GeoVector(GetInnerRadius(), GetStartRadial()).EndPoint(GetReference());
  const GeoPoint inner_end =
    GeoVector(GetInnerRadius(), GetEndRadial()).EndPoint(GetReference());

  GeoVector inner_vector(GetInnerRadius(), start + delta);
  for (; inner_vector.bearing < end; inner_vector.bearing += delta)
    boundary.push_front(inner_vector.EndPoint(GetReference()));

  boundary.push_front(inner_end);
  boundary.push_front(inner_start);

  GeoVector vector(GetRadius(), start + delta);
  for (; vector.bearing < end; vector.bearing += delta)
    boundary.push_front(vector.EndPoint(GetReference()));

  boundary.push_front(GetSectorEnd());
  boundary.push_front(GetSectorStart());

  return boundary;
}
开发者ID:Adrien81,项目名称:XCSoar,代码行数:33,代码来源:AnnularSectorZone.cpp

示例6: fixed

void
OZPreviewRenderer::Draw(Canvas &canvas, const ObservationZonePoint &oz,
                        const RasterPoint pt, unsigned radius,
                        const TaskLook &look,
                        const AirspaceRendererSettings &airspace_settings,
                        const AirspaceLook &airspace_look)
{
  fixed scale;
  GeoPoint center;

  if (IsAncientHardware()) {
    scale = fixed(radius) / ((const CylinderZone &)oz).GetRadius();
    center = oz.GetReference();
  } else {
    OZBoundary boundary = oz.GetBoundary();

    auto it = boundary.begin();
    GeoBounds bounds(*it);
    for (auto it_end = boundary.end(); it != it_end; ++it)
      bounds.Extend(*it);

    center = bounds.GetCenter();

    fixed geo_heigth = GeoPoint(center.longitude, bounds.north).Distance(
                       GeoPoint(center.longitude, bounds.south));
    fixed geo_width = GeoPoint(bounds.west, center.latitude).Distance(
                      GeoPoint(bounds.east, center.latitude));

    scale = fixed(radius * 2) / std::max(geo_heigth, geo_width);
  }

  WindowProjection projection;
  projection.SetScreenSize(radius * 2, radius * 2);
  projection.SetScreenOrigin(pt.x, pt.y);
  projection.SetGeoLocation(center);
  projection.SetScale(scale);
  projection.SetScreenAngle(Angle::Zero());
  projection.UpdateScreenBounds();

  OZRenderer ozv(look, airspace_look, airspace_settings);
  ozv.Draw(canvas, OZRenderer::LAYER_SHADE, projection, oz, 1);
  ozv.Draw(canvas, OZRenderer::LAYER_INACTIVE, projection, oz, 1);
  ozv.Draw(canvas, OZRenderer::LAYER_ACTIVE, projection, oz, 1);
}
开发者ID:damianob,项目名称:xcsoar,代码行数:44,代码来源:OZPreviewRenderer.cpp

示例7: double

void
OZPreviewRenderer::Draw(Canvas &canvas, const ObservationZonePoint &oz,
                        const PixelPoint pt, unsigned radius,
                        const TaskLook &look,
                        const AirspaceRendererSettings &airspace_settings,
                        const AirspaceLook &airspace_look)
{
  double scale;
  GeoPoint center;

  if (IsAncientHardware()) {
    scale = double(radius) / ((const CylinderZone &)oz).GetRadius();
    center = oz.GetReference();
  } else {
    OZBoundary boundary = oz.GetBoundary();

    GeoBounds bounds = GeoBounds::Invalid();
    for (auto i = boundary.begin(), end = boundary.end(); i != end; ++i)
      bounds.Extend(*i);

    center = bounds.GetCenter();

    auto geo_width = bounds.GetGeoWidth();
    auto geo_heigth = bounds.GetGeoHeight();

    scale = double(radius * 2) / std::max(geo_heigth, geo_width);
  }

  WindowProjection projection;
  projection.SetScreenSize({radius * 2, radius * 2});
  projection.SetScreenOrigin(pt.x, pt.y);
  projection.SetGeoLocation(center);
  projection.SetScale(scale);
  projection.SetScreenAngle(Angle::Zero());
  projection.UpdateScreenBounds();

  OZRenderer ozv(look, airspace_look, airspace_settings);
  ozv.Draw(canvas, OZRenderer::LAYER_SHADE, projection, oz, 1);
  ozv.Draw(canvas, OZRenderer::LAYER_INACTIVE, projection, oz, 1);
  ozv.Draw(canvas, OZRenderer::LAYER_ACTIVE, projection, oz, 1);
}
开发者ID:Advi42,项目名称:XCSoar,代码行数:41,代码来源:OZPreviewRenderer.cpp

示例8: GetBoundary

void 
SampledTaskPoint::UpdateOZ(const TaskProjection &projection)
{ 
  search_max = search_reference;
  search_min = search_reference;
  boundary_points.clear();

  if (boundary_scored) {
    const OZBoundary boundary = GetBoundary();
    for (auto i = boundary.begin(), end = boundary.end(); i != end; ++i) {
      SearchPoint sp(*i);
      boundary_points.push_back(sp);
    }

    boundary_points.PruneInterior();
  } else {
    boundary_points.push_back(search_reference);
  }

  UpdateProjection(projection);
}
开发者ID:FlorianR,项目名称:XCSoar,代码行数:21,代码来源:SampledTaskPoint.cpp

示例9: pen

void
OZWindow::OnPaint(Canvas &canvas)
{
    canvas.ClearWhite();
    if (oz == NULL)
        return;

    const int offset = 0;

    roz.Draw(canvas, OZRenderer::LAYER_SHADE, projection, *oz, offset);
    roz.Draw(canvas, OZRenderer::LAYER_INACTIVE, projection, *oz, offset);
    roz.Draw(canvas, OZRenderer::LAYER_ACTIVE, projection, *oz, offset);

    /* debugging for ObservationZone::GetBoundary() */
    Pen pen(1, COLOR_RED);
    canvas.Select(pen);
    const OZBoundary boundary = oz->GetBoundary();
    for (auto i = boundary.begin(), end = boundary.end(); i != end; ++i) {
        RasterPoint p = projection.GeoToScreen(*i);
        canvas.DrawLine(p.x - 3, p.y - 3, p.x + 3, p.y + 3);
        canvas.DrawLine(p.x + 3, p.y - 3, p.x - 3, p.y + 3);
    }
}
开发者ID:j-konopka,项目名称:XCSoar-TE,代码行数:23,代码来源:RunRenderOZ.cpp

示例10: small_vector

OZBoundary
KeyholeZone::GetBoundary() const
{
  OZBoundary boundary;
  boundary.push_front(GetSectorStart());
  boundary.push_front(GetSectorEnd());

  boundary.GenerateArcExcluding(GetReference(), GetRadius(),
                                GetStartRadial(), GetEndRadial());

  const fixed small_radius = GetInnerRadius();
  GeoVector small_vector(small_radius, GetStartRadial());
  boundary.push_front(small_vector.EndPoint(GetReference()));
  small_vector.bearing = GetEndRadial();
  boundary.push_front(small_vector.EndPoint(GetReference()));

  boundary.GenerateArcExcluding(GetReference(), small_radius,
                                GetEndRadial(), GetStartRadial());

  return std::move(boundary);
}
开发者ID:M-Scholli,项目名称:XCSoar,代码行数:21,代码来源:KeyholeZone.cpp


注:本文中的OZBoundary类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。