Pyrogenesis  trunk
Functions
Geometry Namespace Reference

Functions

CFixedVector2D GetHalfBoundingBox (const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize)
 Returns a vector (bx,by) such that every point inside the given rotated rectangle has coordinates (x,y) with -bx <= x <= bx, -by <= y < by. More...
 
fixed DistanceToSquare (const CFixedVector2D &point, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize, bool countInsideAsZero=false)
 Returns the minimum Euclidean distance from the given point to any point on the boundary of the given rotated rectangle. More...
 
fixed DistanceToSquareSquared (const CFixedVector2D &point, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize, bool countInsideAsZero=false)
 Similar to above but never uses sqrt, so it returns the squared distance. More...
 
CFixedVector2D NearestPointOnSquare (const CFixedVector2D &point, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize)
 Returns a point on the boundary of the given rotated rectangle that is closest (or equally closest) to the given point in Euclidean distance. More...
 
fixed DistanceSquareToSquare (const CFixedVector2D &relativePos, const CFixedVector2D &u1, const CFixedVector2D &v1, const CFixedVector2D &halfSize1, const CFixedVector2D &u2, const CFixedVector2D &v2, const CFixedVector2D &halfSize2)
 Returns the shortest distance between two squares. More...
 
fixed MaxDistanceToSquare (const CFixedVector2D &point, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize, bool countInsideAsZero=false)
 Returns the greatest straight line distance from a point to a square. More...
 
fixed MaxDistanceSquareToSquare (const CFixedVector2D &relativePos, const CFixedVector2D &u1, const CFixedVector2D &v1, const CFixedVector2D &halfSize1, const CFixedVector2D &u2, const CFixedVector2D &v2, const CFixedVector2D &halfSize2)
 Return the greatest straight line distance between two squares. More...
 
bool TestRaySquare (const CFixedVector2D &a, const CFixedVector2D &b, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize)
 
bool TestRayAASquare (const CFixedVector2D &a, const CFixedVector2D &b, const CFixedVector2D &halfSize)
 
static bool SquareSAT (const CFixedVector2D &a, const CFixedVector2D &axis, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize)
 Separating axis test; returns true if the square defined by u/v/halfSize at the origin is not entirely on the clockwise side of a line in direction 'axis' passing through 'a'. More...
 
bool TestSquareSquare (const CFixedVector2D &c0, const CFixedVector2D &u0, const CFixedVector2D &v0, const CFixedVector2D &halfSize0, const CFixedVector2D &c1, const CFixedVector2D &u1, const CFixedVector2D &v1, const CFixedVector2D &halfSize1)
 
int GetPerimeterDistance (int x_max, int y_max, int x, int y)
 Used in Footprint when spawning units: Given a grid point (x, y) on the rectangle [-x_max, x_max] x [-y_max, y_max], this returns the distance travelled in moving from (x_max, 0) to the the point while walking counter-clockwise along the perimeter of the rectangle. More...
 
std::pair< int, int > GetPerimeterCoordinates (int x_max, int y_max, int k)
 Used in Footprint when spawning units: This returns the grid point on the rectangle [-x_max, x_max] x [-y_max, y_max] reached after starting at (x_max, 0) and walking a distance k counter-clockwise along the perimeter of the rectangle. More...
 
fixed DistanceToSegment (const CFixedVector2D &point, const CFixedVector2D &a, const CFixedVector2D &b)
 Returns the minimum Euclidean distance from the given point to any point on the given segment. More...
 
bool PointIsInSquare (const CFixedVector2D &point, const CFixedVector2D &u, const CFixedVector2D &v, const CFixedVector2D &halfSize)
 Checks if a point is inside the given rotated rectangle. More...
 

Function Documentation

◆ DistanceSquareToSquare()

fixed Geometry::DistanceSquareToSquare ( const CFixedVector2D relativePos,
const CFixedVector2D u1,
const CFixedVector2D v1,
const CFixedVector2D halfSize1,
const CFixedVector2D u2,
const CFixedVector2D v2,
const CFixedVector2D halfSize2 
)

Returns the shortest distance between two squares.

◆ DistanceToSegment()

fixed Geometry::DistanceToSegment ( const CFixedVector2D point,
const CFixedVector2D a,
const CFixedVector2D b 
)

Returns the minimum Euclidean distance from the given point to any point on the given segment.

and represents segment's points.

◆ DistanceToSquare()

fixed Geometry::DistanceToSquare ( const CFixedVector2D point,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize,
bool  countInsideAsZero = false 
)

Returns the minimum Euclidean distance from the given point to any point on the boundary of the given rotated rectangle.

If countInsideAsZero is true, and the point is inside the rectangle, it will return 0. If countInsideAsZero is false, the (positive) distance to the boundary will be returned regardless of where the point is.

The rectangle is defined by the four vertexes (+/-u*halfSize.X +/-v*halfSize.Y).

The u and v vectors must be perpendicular and unit length.

◆ DistanceToSquareSquared()

fixed Geometry::DistanceToSquareSquared ( const CFixedVector2D point,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize,
bool  countInsideAsZero 
)

Similar to above but never uses sqrt, so it returns the squared distance.

◆ GetHalfBoundingBox()

CFixedVector2D Geometry::GetHalfBoundingBox ( const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize 
)

Returns a vector (bx,by) such that every point inside the given rotated rectangle has coordinates (x,y) with -bx <= x <= bx, -by <= y < by.

The rectangle is defined by the four vertexes (+/-u*halfSize.X +/-v*halfSize.Y).

◆ GetPerimeterCoordinates()

std::pair< int, int > Geometry::GetPerimeterCoordinates ( int  x_max,
int  y_max,
int  k 
)

Used in Footprint when spawning units: This returns the grid point on the rectangle [-x_max, x_max] x [-y_max, y_max] reached after starting at (x_max, 0) and walking a distance k counter-clockwise along the perimeter of the rectangle.

◆ GetPerimeterDistance()

int Geometry::GetPerimeterDistance ( int  x_max,
int  y_max,
int  x,
int  y 
)

Used in Footprint when spawning units: Given a grid point (x, y) on the rectangle [-x_max, x_max] x [-y_max, y_max], this returns the distance travelled in moving from (x_max, 0) to the the point while walking counter-clockwise along the perimeter of the rectangle.

◆ MaxDistanceSquareToSquare()

fixed Geometry::MaxDistanceSquareToSquare ( const CFixedVector2D relativePos,
const CFixedVector2D u1,
const CFixedVector2D v1,
const CFixedVector2D halfSize1,
const CFixedVector2D u2,
const CFixedVector2D v2,
const CFixedVector2D halfSize2 
)

Return the greatest straight line distance between two squares.

◆ MaxDistanceToSquare()

fixed Geometry::MaxDistanceToSquare ( const CFixedVector2D point,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize,
bool  countInsideAsZero = false 
)

Returns the greatest straight line distance from a point to a square.

If countInsideAsZero is true, and the point is inside the rectangle, it will return 0. If countInsideAsZero is false, the greatest (positive) distance to the boundary will be returned regardless of where the point is.

◆ NearestPointOnSquare()

CFixedVector2D Geometry::NearestPointOnSquare ( const CFixedVector2D point,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize 
)

Returns a point on the boundary of the given rotated rectangle that is closest (or equally closest) to the given point in Euclidean distance.

The rectangle is defined by the four vertexes (+/-u*halfSize.X +/-v*halfSize.Y).

The u and v vectors must be perpendicular and unit length.

◆ PointIsInSquare()

bool Geometry::PointIsInSquare ( const CFixedVector2D point,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize 
)
inline

Checks if a point is inside the given rotated rectangle.

Points precisely on an edge are considered to be inside.

The rectangle is defined by the four vertexes (+/-u*halfSize.X +/-v*halfSize.Y)

The u and v vectors must be perpendicular.

◆ SquareSAT()

static bool Geometry::SquareSAT ( const CFixedVector2D a,
const CFixedVector2D axis,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize 
)
static

Separating axis test; returns true if the square defined by u/v/halfSize at the origin is not entirely on the clockwise side of a line in direction 'axis' passing through 'a'.

◆ TestRayAASquare()

bool Geometry::TestRayAASquare ( const CFixedVector2D a,
const CFixedVector2D b,
const CFixedVector2D halfSize 
)

◆ TestRaySquare()

bool Geometry::TestRaySquare ( const CFixedVector2D a,
const CFixedVector2D b,
const CFixedVector2D u,
const CFixedVector2D v,
const CFixedVector2D halfSize 
)

◆ TestSquareSquare()

bool Geometry::TestSquareSquare ( const CFixedVector2D c0,
const CFixedVector2D u0,
const CFixedVector2D v0,
const CFixedVector2D halfSize0,
const CFixedVector2D c1,
const CFixedVector2D u1,
const CFixedVector2D v1,
const CFixedVector2D halfSize1 
)