41 initialize(pLow, pHigh, dimension);
48 "Region::Region: arguments have different number of dimensions."
59 void Region::initialize(
const double* pLow,
const double* pHigh, uint32_t dimension)
96 "Region::operator==: Regions have different number of dimensions."
102 m_pLow[i] < r.
m_pLow[i] - std::numeric_limits<double>::epsilon() ||
103 m_pLow[i] > r.
m_pLow[i] + std::numeric_limits<double>::epsilon() ||
104 m_pHigh[i] < r.
m_pHigh[i] - std::numeric_limits<double>::epsilon() ||
105 m_pHigh[i] > r.
m_pHigh[i] + std::numeric_limits<double>::epsilon())
124 return (
sizeof(uint32_t) + 2 *
m_dimension *
sizeof(
double));
130 memcpy(&dimension, ptr,
sizeof(uint32_t));
131 ptr +=
sizeof(uint32_t);
143 *data =
new uint8_t[len];
144 uint8_t* ptr = *data;
147 ptr +=
sizeof(uint32_t);
165 const Point* ppt =
dynamic_cast<const Point*
>(&s);
169 "Region::intersectsShape: Not implemented yet!"
178 const Point* ppt =
dynamic_cast<const Point*
>(&s);
182 "Region::containsShape: Not implemented yet!"
191 const Point* ppt =
dynamic_cast<const Point*
>(&s);
195 "Region::touchesShape: Not implemented yet!"
235 const Point* ppt =
dynamic_cast<const Point*
>(&s);
239 "Region::getMinimumDistance: Not implemented yet!"
247 "Region::intersectsRegion: Regions have different number of dimensions."
261 "Region::containsRegion: Regions have different number of dimensions."
275 "Region::touchesRegion: Regions have different number of dimensions."
281 (
m_pLow[i] >= r.
m_pLow[i] - std::numeric_limits<double>::epsilon() &&
282 m_pLow[i] <= r.
m_pLow[i] + std::numeric_limits<double>::epsilon()) ||
283 (
m_pHigh[i] >= r.
m_pHigh[i] - std::numeric_limits<double>::epsilon() &&
284 m_pHigh[i] <= r.
m_pHigh[i] + std::numeric_limits<double>::epsilon()))
295 "Region::getMinimumDistance: Regions have different number of dimensions."
316 return std::sqrt(ret);
323 "Region::intersectsLineSegment: only supported for 2 dimensions"
328 "Region::intersectsRegion: Region and LineSegment have different number of dimensions."
357 "Region::containsPoint: Point has different number of dimensions."
371 "Region::touchesPoint: Point has different number of dimensions."
390 "Region::getMinimumDistance: Point has different number of dimensions."
407 return std::sqrt(ret);
414 "Region::getIntersectingRegion: Regions have different number of dimensions."
422 for (uint32_t cDim = 0; cDim <
m_dimension; ++cDim)
427 for (uint32_t cDim = 0; cDim <
m_dimension; ++cDim)
440 "Region::getIntersectingArea: Regions have different number of dimensions."
446 for (uint32_t cDim = 0; cDim <
m_dimension; ++cDim)
464 double mul = std::pow(2.0,
static_cast<double>(
m_dimension) - 1.0);
479 "Region::combineRegion: Region has different number of dimensions."
482 for (uint32_t cDim = 0; cDim <
m_dimension; ++cDim)
493 "Region::combinePoint: Point has different number of dimensions."
496 for (uint32_t cDim = 0; cDim <
m_dimension; ++cDim)
507 "Region::getCombinedRegion: Regions have different number of dimensions."
533 for (uint32_t cIndex = 0; cIndex <
m_dimension; ++cIndex)
535 m_pLow[cIndex] = std::numeric_limits<double>::max();
536 m_pHigh[cIndex] = -std::numeric_limits<double>::max();
bool intersectsShape(const IShape &in) const override
virtual double getCoordinate(uint32_t index) const
virtual void makeDimension(uint32_t dimension)
virtual Region & operator=(const Region &r)
virtual void getCombinedRegion(Region &out, const Region &in) const
Region * clone() override
virtual bool operator==(const Region &) const
virtual double getIntersectingArea(const Region &in) const
bool containsShape(const IShape &in) const override
void storeToByteArray(uint8_t **data, uint32_t &length) override
void loadFromByteArray(const uint8_t *data) override
uint32_t getDimension() const override
virtual void combinePoint(const Point &in)
virtual double getMargin() const
double getMinimumDistance(const IShape &in) const override
virtual void combineRegion(const Region &in)
virtual void makeDimension(uint32_t dimension)
virtual Region getIntersectingRegion(const Region &r) const
virtual double getHigh(uint32_t index) const
virtual bool containsPoint(const Point &in) const
virtual double getLow(uint32_t index) const
virtual bool intersectsRegion(const Region &in) const
virtual void makeInfinite(uint32_t dimension)
uint32_t getByteArraySize() override
static constexpr int local_dim
bool intersectsShape(const IShape &in) const override
void getCenter(Point &out) const override
bool touchesShape(const IShape &in) const override
virtual bool containsRegion(const Region &in) const
virtual bool touchesPoint(const Point &in) const
virtual bool intersectsLineSegment(const LineSegment &in) const
virtual bool touchesRegion(const Region &in) const
void getMBR(Region &out) const override
double getArea() const override
SIDX_DLL std::ostream & operator<<(std::ostream &os, const Ball &ball)