Files
StarPilot/mapd_repo/math/line.go
T
firestar5683 1ce9f73ae2 Navigation and maps
Add navigation and map matching providers with the vendored map service sources.
2026-10-03 22:34:37 +00:00

21 lines
368 B
Go

package math
type Line struct {
Start, End Position
}
type LinePosition struct {
Pos Position
T float64
}
func (l *Line) NearestPosition(pos Position) LinePosition {
AB := l.End.Subtract(l.Start)
AP := pos.Subtract(l.Start)
t := AP.Dot(AB) / AB.Dot(AB)
t = max(0, min(1, t))
closest := l.Start.Add(AB.Scale(t))
return LinePosition{Pos: closest, T: t}
}