diff cmd/octreediff/main.go @ 2483:620038ade708 octree-diff

Incorporated fogleman's fast Delaunay triangulation adjuted to our vertex model. License: MIT Home: https://github.com/fogleman/delaunay
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 01 Mar 2019 15:33:27 +0100
parents 242104c338ff
children 4fa92d468164
line wrap: on
line diff
--- a/cmd/octreediff/main.go	Fri Mar 01 11:06:27 2019 +0100
+++ b/cmd/octreediff/main.go	Fri Mar 01 15:33:27 2019 +0100
@@ -114,6 +114,21 @@
 
 type pointMap map[point]float64
 
+func (pm pointMap) triangulate() {
+	start := time.Now()
+	points := make([]octree.Vertex, len(pm))
+	var i int
+	for p, z := range pm {
+		points[i] = octree.Vertex{X: p.x, Y: p.y, Z: z}
+		i++
+	}
+	_, err := octree.Triangulate(points)
+	if err != nil {
+		log.Printf("triangulate error: %v\n", err)
+	}
+	log.Printf("in memory triangulation (%d points) took %s\n", i, time.Since(start))
+}
+
 func (pm pointMap) asWKB() []byte {
 	size := 1 + 4 + 4 + len(pm)*(1+4+3*8)
 
@@ -353,6 +368,8 @@
 		last = now
 		log.Printf("num points: %d\n", len(result))
 
+		result.triangulate()
+
 		data := result.asWKB()
 
 		now = time.Now()