17 #ifndef HEADER_SUPERTUX_COLLISION_COLLISION_HPP 18 #define HEADER_SUPERTUX_COLLISION_COLLISION_HPP 23 #include "collision/collision_hit.hpp" 46 float infinity = (std::numeric_limits<float>::has_infinity ?
47 std::numeric_limits<float>::infinity() :
48 std::numeric_limits<float>::max());
49 position_left = -infinity;
50 position_right = infinity;
51 position_top = -infinity;
52 position_bottom = infinity;
54 speed_left = -infinity;
55 speed_right = infinity;
56 speed_top = -infinity;
57 speed_bottom = infinity;
60 bool has_constraints()
const 62 float infinity = (std::numeric_limits<float>::has_infinity ?
63 std::numeric_limits<float>::infinity() :
64 std::numeric_limits<float>::max());
66 position_left > -infinity ||
67 position_right < infinity ||
68 position_top > -infinity ||
69 position_bottom < infinity;
74 void constrain_left (
float position,
float velocity)
76 position_left = std::max (position_left, position);
77 speed_left = std::max (speed_left, velocity);
80 void constrain_right (
float position,
float velocity)
82 position_right = std::min (position_right, position);
83 speed_right = std::min (speed_right, velocity);
86 void constrain_top (
float position,
float velocity)
88 position_top = std::max (position_top, position);
89 speed_top = std::max (speed_top, velocity);
92 void constrain_bottom (
float position,
float velocity)
94 position_bottom = std::min (position_bottom, position);
95 speed_bottom = std::min (speed_bottom, velocity);
98 float get_position_left ()
const {
return position_left; }
99 float get_position_right ()
const {
return position_right; }
100 float get_position_top ()
const {
return position_top; }
101 float get_position_bottom ()
const {
return position_bottom; }
103 float get_height ()
const {
return (position_bottom - position_top); }
104 float get_width ()
const {
return (position_right - position_left); }
106 float get_x_midpoint ()
const {
return (.5f * (position_left + position_right)); }
113 float position_right;
115 float position_bottom;
124 bool intersects(
const Rectf& r1,
const Rectf& r2);
132 void set_rectangle_rectangle_constraints(
Constraints* constraints,
135 bool line_intersects_line(
const Vector& line1_start,
const Vector& line1_end,
const Vector& line2_start,
const Vector& line2_end);
136 bool intersects_line(
const Rectf& r,
const Vector& line_start,
const Vector& line_end);
Simple two dimensional vector.
Definition: vector.hpp:24
Definition: collision.cpp:24
Definition: collision.hpp:31
An axis-aligned triangle (ie.
Definition: aatriangle.hpp:26
This class collects data about a collision.
Definition: collision_hit.hpp:44