Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
mkobetic committed Jan 20, 2025
1 parent 17a8166 commit a1d6581
Show file tree
Hide file tree
Showing 35 changed files with 21,056 additions and 40,191 deletions.
6 changes: 3 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ func main() {
fmt.Printf("Error opening %s: %s\n", fn, err)
return
}
segments = append(segments, GetSegments(g, filepath.Base(fn))...)
segments = append(segments, gpxGetSegments(g, filepath.Base(fn))...)
}
sort.Sort(segments)
sn := len(segments)
segments = segments.Dedupe(20).Split(time.Hour).Dedupe(20)
segments = segments.gpxDedupe(20).gpxSplit(time.Hour).gpxDedupe(20)
fmt.Printf("Dropped %d duplicate and bogus segments\n", sn-len(segments))
for _, t := range segments.Tracks(time.Hour) {
for _, t := range segments.gpxTracks(time.Hour) {
t.Analyze(Sailing)
// if windDirection != nil {
// t.Analyze(*windDirection)
Expand Down
46 changes: 22 additions & 24 deletions map.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,31 +127,29 @@ func (m *Map) renderSubtitles(w io.Writer, t *Track, videoOffset time.Duration)
currentOffset := videoOffset
totalDistance := float64(0)
cueCounter := 0
for _, s := range t.Segments {
s.gpxEachPair(func(prev, next *gpx.GPXPoint) {
duration := next.Timestamp.Sub(prev.Timestamp)
newOffset := currentOffset + duration
if newOffset < 0 {
currentOffset = newOffset
return
}
cueCounter++
totalDistance += m.Distance(prev, next, nm)
heading := m.Heading(prev, next)
direction := Direction(heading)
fmt.Fprintf(w, "%d\n", cueCounter)
fmt.Fprintf(w, "%s --> %s\n", vttTimestamp(currentOffset), vttTimestamp(newOffset))
fmt.Fprintf(w, "%s: %0.1f m @ %0.1f kts \u2191 %d\u00b0 %s = %0.2f nm\n",
next.Timestamp.In(t.Timezone()).Format(time.TimeOnly),
m.Distance(prev, next, meter),
m.Speed(prev, next, nm),
heading,
direction.String(),
totalDistance)
fmt.Fprintln(w)
t.Segments.EachPair(func(prev, next *Point) {
duration := next.gpx.Timestamp.Sub(prev.gpx.Timestamp)
newOffset := currentOffset + duration
if newOffset < 0 {
currentOffset = newOffset
})
}
return
}
cueCounter++
totalDistance += next.Distance
heading := next.Heading
direction := Direction(heading)
fmt.Fprintf(w, "%d\n", cueCounter)
fmt.Fprintf(w, "%s --> %s\n", vttTimestamp(currentOffset), vttTimestamp(newOffset))
fmt.Fprintf(w, "%s: %0.1f m @ %0.1f kts \u2191 %d\u00b0 %s = %0.2f nm\n",
next.gpx.Timestamp.In(t.Timezone()).Format(time.TimeOnly),
next.Distance,
next.Speed,
heading,
direction.String(),
totalDistance/1852)
fmt.Fprintln(w)
currentOffset = newOffset
})
}

func vttTimestamp(ts time.Duration) string {
Expand Down
Loading

0 comments on commit a1d6581

Please sign in to comment.