KrisLibrary  1.0.0
Segment2D.h
1 #ifndef MATH3D_SEGMENT2D_H
2 #define MATH3D_SEGMENT2D_H
3 
4 #include "Point.h"
5 
6 namespace Math3D {
7 
8 struct Line2D;
9 struct AABB2D;
10 
17 struct Segment2D
18 {
19  void setTransformed(const Segment2D&, const Matrix3& xform);
20  void getLine(Line2D& l) const;
21  Real closestPointParameter(const Point2D& in) const;
22  Real closestPoint(const Point2D& in, Point2D& out) const; //returns the parameter value of the point
23  Real distance(const Point2D& pt) const;
24  void eval(Real t, Point2D& out) const;
25  Real orientation(const Point2D& p) const;
26  bool isLeft(const Point2D& p) const;
27  bool isRight(const Point2D& p) const;
28  bool intersects(const Segment2D& S) const;
29  bool intersects(const Vector2& a,const Vector2& b) const;
30  bool intersects(const Segment2D& S,Vector2& p) const;
31  bool intersects(const Vector2& a,const Vector2& b,Vector2& p) const;
32  bool Read(File& f);
33  bool Write(File& f) const;
34 
35  void getAABB(AABB2D&) const;
36  bool intersects(const AABB2D&) const;
38  bool intersects(const AABB2D&, Real& tmin, Real& tmax) const;
39  Real distance(const AABB2D&) const;
40  Real distance(const AABB2D&, Real& tmin) const;
41 
43  static Real orientation(const Point2D& a,const Point2D& b,const Point2D& x);
44 
45  Point2D a,b;
46 };
47 
48 } //namespace Math3D
49 
50 #endif
Real orientation(const Point2D &p) const
>0 for left, <0 for right
Definition: Segment2D.cpp:76
bool isRight(const Point2D &p) const
p right of A->B
A 2D line class.
Definition: Line2D.h:19
bool isLeft(const Point2D &p) const
p left of A->B
A 2D segment class.
Definition: Segment2D.h:17
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:13
A 3x3 matrix class.
Definition: math3d/primitives.h:469
A 2D vector class.
Definition: math3d/primitives.h:41
A 2D axis-aligned bounding box.
Definition: AABB2D.h:13
A cross-platform class for reading/writing binary data.
Definition: File.h:47