36 #ifndef __SBNW_LAYOUT_POINT_H_
37 #define __SBNW_LAYOUT_POINT_H_
55 Point operator- (
const Point& p,
const Point& q);
56 Point operator+ (
const Point& p,
const Point& q);
59 Point operator* (
const Point& p,
const Real s);
60 Point operator* (
const Real s,
const Point& p);
63 Point operator/ (
const Point& p,
const Real s);
66 std::ostream& operator<< (std::ostream&,
const Point& p);
76 static Point polar(
Real mag,
Real theta);
79 Point operator-()
const {
85 return sqrt(x*x + y*y);
96 if (std::abs(x) < ep) {
114 Point squareTerms()
const {
115 return Point(x*x, y*y);
119 Point sqrtTerms()
const {
120 AT(x >= 0 && y >= 0,
"Cannot take negative square root");
121 return Point(sqrt(x), sqrt(y));
125 Point capMag(
const Real cap)
const {
139 void capMag2_(
const Real cap2) {
149 Point normed()
const {
153 return (*
this)*(1./o);
165 Point operator = (
const Point& p) { x =p.x; y = p.y;
return *
this; }
167 Point operator+= (
const Point& p) { x+=p.x; y+=p.y;
return *
this; }
169 Point operator-= (
const Point& p) { x-=p.x; y-=p.y;
return *
this; }
171 static Real min(
Real x,
Real y) {
return x < y ? x : y; }
172 static Real max(
Real x,
Real y) {
return x < y ? y : x; }
175 static Point emin(
const Point& u,
const Point& v) {
176 return Point(min(u.x, v.x), min(u.y,v.y));
180 static Point emax(
const Point& u,
const Point& v) {
181 return Point(max(u.x, v.x), max(u.y,v.y));
185 Point dextro()
const {
186 return polar(mag(), theta() - 0.5*pi);
190 Point sinister()
const {
191 return polar(mag(), theta() + 0.5*pi);
194 std::string rep()
const;
SAGITTARIUS_REAL Real
Make Real visible to C. Consider letting Real lie in top namespace.
Definition: SagittariusCommon.h:136
Definition: SagittariusCommon.cpp:38