36 #ifndef __GRAPHFAB_MATH_GEOM_H_
37 #define __GRAPHFAB_MATH_GEOM_H_
42 #include "graphfab/layout/point.h"
55 const Real pi = 3.14159;
60 inline Point computeCubic(
const Point& alpha,
const Point& beta,
const Point& gamma,
const Point& delta,
Real t) {
61 return alpha*t*t*t + beta*t*t + gamma*t + delta;
65 inline Point new2ndPos(
const Point& first,
const Point& second,
const Real deg,
const Real dist,
const bool rel_dist) {
67 Real hnew, onew, anew;
69 o = second.y - first.y;
70 a = second.x - first.x;
71 h = sqrt(pow(a,2.) + pow(o,2.));
83 x = sign(o)*3.14159/2.;
85 onew = hnew * sin(x + deg2r(deg));
86 anew = hnew * cos(x + deg2r(deg));
88 if(second.x >= first.x)
89 return Point(first.x + anew, first.y + onew);
91 return Point(first.x - anew, first.y - onew);
95 Point calcCurveBackup(
const Point& src,
const Point& cent,
const Box& ext,
Real dist = 20);
99 Line2Desc(
const Point& start,
const Point& end);
101 Real getA()
const {
return A_; }
103 Real getB()
const {
return B_; }
105 Real getC()
const {
return C_; }
110 _GraphfabExport
friend std::ostream& operator<<(std::ostream& o,
const Line2Desc& c);
113 _GraphfabExport std::ostream& operator<<(std::ostream& o,
const Line2Desc& c);
115 class CubicBezier2Desc {
117 CubicBezier2Desc(
const Point& start,
const Point& c1,
const Point& c2,
const Point& end);
120 Point p(
Real t)
const;
123 Point getCP(
int n)
const;
126 Point P0_, P1_, P2_, P3_;
128 _GraphfabExport
friend std::ostream& operator<<(std::ostream& o,
const CubicBezier2Desc& c);
131 _GraphfabExport std::ostream& operator<<(std::ostream& o,
const CubicBezier2Desc& c);
134 class CubicBezierIntersection {
136 CubicBezierIntersection(
const Line2Desc& l,
const CubicBezier2Desc& c);
138 const std::vector<Real>& getIntersectionPoints()
const {
return r_; }
141 std::vector<Real> r_;
156 class LinearIntersection {
158 LinearIntersection(
const Point& pbegin,
const Point& pend,
const Point& qbegin,
const Point& qend);
160 const Point& p() {
return p_; }
161 bool exists() {
return v_; }
174 #endif // __cplusplus
SAGITTARIUS_REAL Real
Make Real visible to C. Consider letting Real lie in top namespace.
Definition: SagittariusCommon.h:136
Sign & magnitude for reals.
Definition: SagittariusCommon.cpp:38