Mercurial > gemma
view pkg/octree/plane2d_test.go @ 2197:3203c53a8d29
import_schedule: user is able to choose between file upload or URL as import type for bottleneckimport
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Tue, 12 Feb 2019 14:29:16 +0100 |
parents | a244b18cb916 |
children |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha L. Teichmann <sascha.teichmann@intevation.de> package octree import ( "math" "testing" ) func TestIntersection(t *testing.T) { table := []struct { a [4]float64 b [4]float64 intersects bool x, y float64 }{ {[4]float64{-1, -1, 1, 1}, [4]float64{-1, 1, 1, -1}, true, 0, 0}, {[4]float64{0, 0, 1, 1}, [4]float64{0, 1, 1, 0}, true, 0.5, 0.5}, {[4]float64{0, 0, 1, 0}, [4]float64{0, 1, 1, 1}, false, 0, 0}, } for _, e := range table { p1 := NewPlane2D(e.a[0], e.a[1], e.a[2], e.a[3]) p2 := NewPlane2D(e.b[0], e.b[1], e.b[2], e.b[3]) x, y, intersects := p1.Intersection(p2) if intersects != e.intersects { t.Fatalf("Have %t want %t\n", intersects, e.intersects) } if e.intersects { if math.Abs(e.x-x) > epsPlane || math.Abs(e.y-y) > epsPlane { t.Fatalf("Have (%f, %f)t want (%f, %f)\n", x, y, e.x, e.y) } } } }