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); }
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; }