summaryrefslogtreecommitdiff
path: root/content/geometry
diff options
context:
space:
mode:
Diffstat (limited to 'content/geometry')
-rw-r--r--content/geometry/delaunay.cpp11
-rw-r--r--content/geometry/formulas.cpp13
-rw-r--r--content/geometry/formulas3d.cpp16
-rw-r--r--content/geometry/geometry.tex1
-rw-r--r--content/geometry/hpi.cpp4
-rw-r--r--content/geometry/linesAndSegments.cpp2
-rw-r--r--content/geometry/polygon.cpp4
-rw-r--r--content/geometry/sortAround.cpp22
-rw-r--r--content/geometry/triangle.cpp4
9 files changed, 38 insertions, 39 deletions
diff --git a/content/geometry/delaunay.cpp b/content/geometry/delaunay.cpp
index c813892..5672b57 100644
--- a/content/geometry/delaunay.cpp
+++ b/content/geometry/delaunay.cpp
@@ -3,7 +3,8 @@ using pt = complex<lll>;
constexpr pt INF_PT = pt(2e18, 2e18);
-bool circ(pt p, pt a, pt b, pt c) {// p in circle(A,B,C), ABC must be ccw
+// p in circle(A,B,C), ABC must be ccw
+bool circ(pt p, pt a, pt b, pt c) {
return imag((c-b)*conj(p-c)*(a-p)*conj(b-a)) < 0;
}
@@ -12,10 +13,10 @@ struct QuadEdge {
QuadEdge* onext = nullptr;
pt orig = INF_PT;
bool used = false;
- QuadEdge* rev() const {return rot->rot;}
- QuadEdge* lnext() const {return rot->rev()->onext->rot;}
- QuadEdge* oprev() const {return rot->onext->rot;}
- pt dest() const {return rev()->orig;}
+ QuadEdge* rev() const { return rot->rot; }
+ QuadEdge* lnext() const { return rot->rev()->onext->rot; }
+ QuadEdge* oprev() const { return rot->onext->rot; }
+ pt dest() const { return rev()->orig; }
};
deque<QuadEdge> edgeData;
diff --git a/content/geometry/formulas.cpp b/content/geometry/formulas.cpp
index 5d4e10d..b339451 100644
--- a/content/geometry/formulas.cpp
+++ b/content/geometry/formulas.cpp
@@ -6,20 +6,17 @@ constexpr double PIU = acos(-1.0l); // PIL < PI < PIU
constexpr double PIL = PIU-2e-19l;
// Winkel zwischen Punkt und x-Achse in [-PI, PI].
-double angle(pt a) {return arg(a);}
+double angle(pt a) { return arg(a); }
// rotiert Punkt im Uhrzeigersinn um den Ursprung.
-pt rotate(pt a, double theta) {return a * polar(1.0, theta);}
+pt rotate(pt a, double theta) { return a * polar(1.0, theta); }
// Skalarprodukt.
-auto dot(pt a, pt b) {return real(conj(a) * b);}
-
-// abs()^2.(pre c++20)
-auto norm(pt a) {return dot(a, a);}
+auto dot(pt a, pt b) { return real(conj(a) * b); }
// Kreuzprodukt, 0, falls kollinear.
-auto cross(pt a, pt b) {return imag(conj(a) * b);}
-auto cross(pt p, pt a, pt b) {return cross(a - p, b - p);}
+auto cross(pt a, pt b) { return imag(conj(a) * b); }
+auto cross(pt p, pt a, pt b) { return cross(a - p, b - p); }
// 1 => c links von a->b
// 0 => a, b und c kolliniear
diff --git a/content/geometry/formulas3d.cpp b/content/geometry/formulas3d.cpp
index 63de2ce..66a4644 100644
--- a/content/geometry/formulas3d.cpp
+++ b/content/geometry/formulas3d.cpp
@@ -2,20 +2,20 @@
auto operator|(pt3 a, pt3 b) {
return a.x * b.x + a.y*b.y + a.z*b.z;
}
-auto dot(pt3 a, pt3 b) {return a|b;}
+auto dot(pt3 a, pt3 b) { return a|b; }
// Kreuzprodukt
-pt3 operator*(pt3 a, pt3 b) {return {a.y*b.z - a.z*b.y,
- a.z*b.x - a.x*b.z,
- a.x*b.y - a.y*b.x};}
-pt3 cross(pt3 a, pt3 b) {return a*b;}
+pt3 operator*(pt3 a, pt3 b) { return {a.y*b.z - a.z*b.y,
+ a.z*b.x - a.x*b.z,
+ a.x*b.y - a.y*b.x}; }
+pt3 cross(pt3 a, pt3 b) { return a*b; }
// Länge von a
-double abs(pt3 a) {return sqrt(dot(a, a));}
-double abs(pt3 a, pt3 b) {return abs(b - a);}
+double abs(pt3 a) { return sqrt(dot(a, a)); }
+double abs(pt3 a, pt3 b) { return abs(b - a); }
// Mixedprodukt
-auto mixed(pt3 a, pt3 b, pt3 c) {return a*b|c;};
+auto mixed(pt3 a, pt3 b, pt3 c) { return a*b|c; }
// orientierung von p zu der Ebene durch a, b, c
// -1 => gegen den Uhrzeigersinn,
diff --git a/content/geometry/geometry.tex b/content/geometry/geometry.tex
index 019a264..976fb4d 100644
--- a/content/geometry/geometry.tex
+++ b/content/geometry/geometry.tex
@@ -29,6 +29,7 @@
\subsection{Formeln~~--~\texttt{std::complex}}
\sourcecode{geometry/formulas.cpp}
+\columnbreak
\sourcecode{geometry/linesAndSegments.cpp}
\sourcecode{geometry/sortAround.cpp}
\input{geometry/triangle}
diff --git a/content/geometry/hpi.cpp b/content/geometry/hpi.cpp
index 02c71e3..ec27254 100644
--- a/content/geometry/hpi.cpp
+++ b/content/geometry/hpi.cpp
@@ -1,6 +1,6 @@
constexpr ll INF = 0x1FFF'FFFF'FFFF'FFFF; //THIS CODE IS WIP
-bool left(pt p) {return real(p) < 0 ||
+bool left(pt p) {return real(p) < 0 ||
(real(p) == 0 && imag(p) < 0);}
struct hp {
pt from, to;
@@ -11,7 +11,7 @@ struct hp {
bool dummy() const {return from == to;}
pt dir() const {return dummy() ? to : to - from;}
bool operator<(const hp& o) const {
- if (left(dir()) != left(o.dir()))
+ if (left(dir()) != left(o.dir()))
return left(dir()) > left(o.dir());
return cross(dir(), o.dir()) > 0;
}
diff --git a/content/geometry/linesAndSegments.cpp b/content/geometry/linesAndSegments.cpp
index ddab554..db34179 100644
--- a/content/geometry/linesAndSegments.cpp
+++ b/content/geometry/linesAndSegments.cpp
@@ -66,7 +66,7 @@ vector<pt> segmentIntersection2(pt a, pt b, pt c, pt d) {
double x = cross(b - a, d - c);
double y = cross(c - a, d - c);
double z = cross(b - a, a - c);
- if (x < 0) {x = -x; y = -y; z = -z;}
+ if (x < 0) { x = -x; y = -y; z = -z; }
if (y < -EPS || y-x > EPS || z < -EPS || z-x > EPS) return {};
if (x > EPS) return {a + y/x*(b - a)};
vector<pt> result;
diff --git a/content/geometry/polygon.cpp b/content/geometry/polygon.cpp
index 064d81f..b9ecebb 100644
--- a/content/geometry/polygon.cpp
+++ b/content/geometry/polygon.cpp
@@ -91,8 +91,8 @@ double dist(const vector<pt>& ps, vector<pt> qs) {
return intersect ? 0 : res;
}
-bool left(pt of, pt p) {return cross(p, of) < 0 ||
- (cross(p, of) == 0 && dot(p, of) > 0);}
+bool left(pt of, pt p) { return cross(p, of) < 0 ||
+ (cross(p, of) == 0 && dot(p, of) > 0); }
// convex hulls without duplicates, hull[0] == hull.back() and
// hull[0] must be a convex point (with angle < pi)
diff --git a/content/geometry/sortAround.cpp b/content/geometry/sortAround.cpp
index 98d17a8..9b09808 100644
--- a/content/geometry/sortAround.cpp
+++ b/content/geometry/sortAround.cpp
@@ -1,11 +1,11 @@
-bool left(pt p) {return real(p) < 0 ||
- (real(p) == 0 && imag(p) < 0);}
-
-// counter clockwise, starting with "11:59"
-void sortAround(pt p, vector<pt>& ps) {
- sort(all(ps), [&](const pt& a, const pt& b){
- if (left(a - p) != left(b - p))
- return left(a - p) > left(b - p);
- return cross(p, a, b) > 0;
- });
-}
+bool left(pt p) { return real(p) < 0 ||
+ (real(p) == 0 && imag(p) < 0); }
+
+// counter clockwise, starting with "11:59"
+void sortAround(pt p, vector<pt>& ps) {
+ sort(all(ps), [&](const pt& a, const pt& b){
+ if (left(a - p) != left(b - p))
+ return left(a - p) > left(b - p);
+ return cross(p, a, b) > 0;
+ });
+}
diff --git a/content/geometry/triangle.cpp b/content/geometry/triangle.cpp
index 534bb10..eab17f4 100644
--- a/content/geometry/triangle.cpp
+++ b/content/geometry/triangle.cpp
@@ -1,5 +1,5 @@
// Mittelpunkt des Dreiecks abc.
-pt centroid(pt a, pt b, pt c) {return (a + b + c) / 3.0;}
+pt centroid(pt a, pt b, pt c) { return (a + b + c) / 3.0; }
// Flächeninhalt eines Dreicks bei bekannten Eckpunkten.
double area(pt a, pt b, pt c) {
@@ -30,7 +30,7 @@ pt circumCenter(pt a, pt b, pt c) {
// -1 => p außerhalb Kreis durch a,b,c
// 0 => p auf Kreis durch a,b,c
// 1 => p im Kreis durch a,b,c
-int insideOutCenter(pt a, pt b, pt c, pt p) {// braucht lll
+int insideOutCenter(pt a, pt b, pt c, pt p) { // braucht lll
return ccw(a,b,c) * sgn(imag((c-b)*conj(p-c)*(a-p)*conj(b-a)));
}