mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-28 00:53:45 +08:00
ab81464bd1
Add navigation and map matching providers with the vendored map service sources. Co-authored-by: Daniel Koepping <elkoled@gmail.com> Co-authored-by: Danny <dannyirwin31@yahoo.com> Co-authored-by: Prabhaav Pillai <prabhaav@msu.edu> Co-authored-by: dirwin31 <83434411+dirwin31@users.noreply.github.com>
21 lines
368 B
Go
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}
|
|
}
|