2 * Copyright © 2014 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
19 package org.altusmetrum.altoslib_14;
22 import java.lang.Math;
24 import java.util.concurrent.*;
26 public abstract class AltosMapPath {
28 public LinkedList<AltosMapPathPoint> points = new LinkedList<AltosMapPathPoint>();
29 public AltosMapPathPoint last_point = null;
31 static public int stroke_width = 6;
33 public abstract void paint(AltosMapTransform t);
35 public AltosMapRectangle add(AltosGPS gps, double time, int state, double gps_height) {
36 AltosMapPathPoint point = new AltosMapPathPoint(gps, time, state, gps_height);
37 AltosMapRectangle rect = null;
39 if (!point.equals(last_point)) {
40 if (last_point != null)
41 rect = new AltosMapRectangle(last_point.gps.lat_lon(), point.gps.lat_lon());
48 private double dist(AltosLatLon lat_lon, AltosMapPathPoint point) {
49 return (new AltosGreatCircle(lat_lon.lat,
52 point.gps.lon)).distance;
55 public AltosMapPathPoint nearest(AltosLatLon lat_lon) {
56 AltosMapPathPoint nearest = null;
57 double nearest_dist = 0;
58 for (AltosMapPathPoint point : points) {
59 if (nearest == null) {
61 nearest_dist = dist(lat_lon, point);
63 double d = dist(lat_lon, point);
64 if (d < nearest_dist) {
73 public void clear () {
74 points = new LinkedList<AltosMapPathPoint>();