Skip to content

Commit

Permalink
Added RMProjection geometry helper functions for RMProjectedRect and …
Browse files Browse the repository at this point in the history
…RMProjectedSize
  • Loading branch information
aaron-foreflight committed Aug 31, 2011
1 parent b07b654 commit d97bd19
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
26 changes: 26 additions & 0 deletions MapView/Map/RMFoundation.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,14 @@ bool RMProjectedRectInterectsProjectedRect(RMProjectedRect rect1, RMProjectedRec

}

bool RMProjectedSizeEqualToProjectedSize(RMProjectedSize size1, RMProjectedSize size2) {
return ((size1.width == size2.width) && (size1.height == size2.height));
}

bool RMProjectedRectEqualToProjectedRect(RMProjectedRect rect1, RMProjectedRect rect2) {
return (RMProjectedPointEqualToProjectedPoint(rect1.origin, rect2.origin) && RMProjectedSizeEqualToProjectedSize(rect1.size, rect2.size));
}

RMProjectedPoint RMScaleProjectedPointAboutPoint(RMProjectedPoint point, float factor, RMProjectedPoint pivot)
{
point.easting = (point.easting - pivot.easting) * factor + pivot.easting;
Expand Down Expand Up @@ -88,6 +96,13 @@ RMProjectedPoint RMMakeProjectedPoint (double easting, double northing)
return point;
}

RMProjectedSize RMMakeProjectedSize(double width, double height) {
RMProjectedSize size = {
width, height
};
return size;
}

RMProjectedRect RMMakeProjectedRect (double easting, double northing, double width, double height)
{
RMProjectedRect rect = {
Expand All @@ -97,3 +112,14 @@ RMProjectedRect RMMakeProjectedRect (double easting, double northing, double wi

return rect;
}

double RMProjectedRectGetMidEasting(RMProjectedRect rect) {
return (rect.origin.easting + rect.size.width / 2);
}

double RMProjectedRectGetMidNorthing(RMProjectedRect rect){
return (rect.origin.northing + rect.size.height / 2);
}



16 changes: 13 additions & 3 deletions MapView/Map/RMFoundation.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,24 @@ typedef struct {

/// \brief The function checks whether two passed projected points are equal.
bool RMProjectedPointEqualToProjectedPoint(RMProjectedPoint point1, RMProjectedPoint point2);
/// \brief The function returs true, if passed rects intersect each other.
/// \brief The fuction returns true if the passed sizes are equal
bool RMProjectedSizeEqualToProjectedSize(RMProjectedSize size1, RMProjectedSize size2);
/// \brief The fuction returns true if the passed rects are equal
bool RMProjectedRectEqualToProjectedRect(RMProjectedRect rect1, RMProjectedRect rect2);
/// \brief The function returns true if passed rects intersect each other.
bool RMProjectedRectInterectsProjectedRect(RMProjectedRect rect1, RMProjectedRect rect2);

RMProjectedPoint RMScaleProjectedPointAboutPoint (RMProjectedPoint point, float factor, RMProjectedPoint pivot);
RMProjectedRect RMScaleProjectedRectAboutPoint(RMProjectedRect rect, float factor, RMProjectedPoint pivot);
RMProjectedPoint RMTranslateProjectedPointBy (RMProjectedPoint point, RMProjectedSize delta);
RMProjectedRect RMTranslateProjectedRectBy (RMProjectedRect rect, RMProjectedSize delta);

RMProjectedPoint RMMakeProjectedPoint (double easting, double northing);
RMProjectedRect RMMakeProjectedRect (double easting, double northing, double width, double height);
RMProjectedPoint RMMakeProjectedPoint (double easting, double northing);
RMProjectedSize RMMakeProjectedSize(double width, double height);
RMProjectedRect RMMakeProjectedRect (double easting, double northing, double width, double height);

/// \brief The function returns the midpoint easting of the given rect.
double RMProjectedRectGetMidEasting(RMProjectedRect rect);

/// \brief The function returns the midpoint northing of the given rect.
double RMProjectedRectGetMidNorthing(RMProjectedRect rect);

0 comments on commit d97bd19

Please sign in to comment.