summaryrefslogtreecommitdiffstats
path: root/geometry.c
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2007-08-29 21:54:05 +0200
committerneoraider <devnull@localhost>2007-08-29 21:54:05 +0200
commit4d035c645584451925ee533e7bd9e1158b5cf7da (patch)
tree14492f3f2501771dca28a4b0cba9376a1bfead85 /geometry.c
parent22da7179ace053f399d43bce061d81aac98f3c4c (diff)
downloadzoomedit-4d035c645584451925ee533e7bd9e1158b5cf7da.tar
zoomedit-4d035c645584451925ee533e7bd9e1158b5cf7da.zip
zoomedit: Einige Rauminformationen werden jetzt angezeigt & Name kann ge?ndert werden.
Diffstat (limited to 'geometry.c')
-rw-r--r--geometry.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/geometry.c b/geometry.c
index 057fea0..248f354 100644
--- a/geometry.c
+++ b/geometry.c
@@ -44,7 +44,6 @@ double vertexDistance(const VERTEX *v1, const VERTEX *v2) {
return sqrt(vertexDistanceSquare(v1, v2));
}
-
int vertexInRect(const VERTEX *v, const RECTANGLE *rect) {
int ret = EDGE_NONE;
@@ -133,6 +132,26 @@ gboolean vertexInPolygon(const VERTEX *v, const POLYGON *p) {
return (d == 0) ? FALSE : TRUE;
}
+double polygonPerimeter(const POLYGON *p) {
+ int i;
+ double d = 0.0;
+
+ for(i = 0; i < p->nVertices; i++)
+ d += vertexDistance(&p->vertices[i], &p->vertices[(i+1)%p->nVertices]);
+
+ return d;
+}
+
+double polygonArea(const POLYGON *p) {
+ int i;
+ double d = 0.0;
+
+ for(i = 0; i < p->nVertices; i++)
+ d += (p->vertices[(i+1)%p->nVertices].x+p->vertices[i].x)*(p->vertices[(i+1)%p->nVertices].y-p->vertices[i].y);
+
+ return d/2;
+}
+
int lineIntersection(const LINE *la, const LINE *lb, VERTEX *v) {
double xa1 = la->v1.x, ya1 = la->v1.y;
double xa2 = la->v2.x, ya2 = la->v2.y;