Files
bwinf-nasserhund/minpath.go
2025-11-12 22:17:04 +01:00

33 lines
839 B
Go

package main
import (
"fmt"
"math"
)
func calcMin(maps []Map) float64 {
var minDist float64 = math.MaxFloat64
for _, m := range maps {
for _, path := range m.paths {
minDist = math.Min(minDist, calcMinPath(path, m.ponds))
}
}
return minDist
}
func calcMinPath(path Path, ponds []Pond) float64 {
var minDist float64 = math.MaxFloat64
for _, pond := range ponds {
for _, vertex := range pond.vertices {
cinitial := path.start.distance(path.end)
ainitial := path.end.distance(vertex)
c := path.start.distance(vertex)
alpha := math.Acos((ainitial*ainitial - cinitial*cinitial - c*c) / (-2 * cinitial * c))
height := math.Sin(alpha) * c
minDist = math.Min(minDist, height)
fmt.Printf("alpha: %f, c: %f, cinital: %f, ainitial: %F, h: %f\n", alpha, c, cinitial, ainitial, height)
}
}
return minDist
}