github.com/pavlo67/common@v0.5.3/common/mathlib/plane/shapes.go (about) 1 package plane 2 3 import "math" 4 5 func Center(points ...Point2) Point2 { 6 if len(points) < 1 { 7 return Point2{math.NaN(), math.NaN()} 8 } 9 var x, y float64 10 for _, element := range points { 11 x += element.X 12 y += element.Y 13 } 14 15 n := float64(len(points)) 16 17 return Point2{X: x / n, Y: y / n} 18 } 19 20 func TriangleArea(p0, p1, p2 Point2) float64 { 21 a, b, c := p0.DistanceTo(p1), p1.DistanceTo(p2), p2.DistanceTo(p0) 22 23 //log.Printf("p0 (%v), p1 (%v), p2 (%v) --> a (%f), b (%f), c (%f)", p0, p1, p2, a, b, c) 24 25 p := (a + b + c) / 2 26 27 return math.Sqrt(p * (p - a) * (p - b) * (p - c)) 28 }