Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
|
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... | |
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
|
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.
|
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'.
bool Geometry::TestRayAASquare | ( | const CFixedVector2D & | a, |
const CFixedVector2D & | b, | ||
const CFixedVector2D & | halfSize | ||
) |
bool Geometry::TestRaySquare | ( | const CFixedVector2D & | a, |
const CFixedVector2D & | b, | ||
const CFixedVector2D & | u, | ||
const CFixedVector2D & | v, | ||
const CFixedVector2D & | halfSize | ||
) |
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 | ||
) |