org.opentripplanner.visibility.PolarPointWithEdgeInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
package org.opentripplanner.visibility;
/**
Ported by David Turner from Visilibity, by Karl J. Obermeyer
This port undoubtedly introduced a number of bugs (and removed some features).
Bug reports should be directed to the OpenTripPlanner project, unless they
can be reproduced in the original VisiLibity
*/
class PolarPointWithEdgeInfo extends PolarPoint implements Cloneable {
// this was originally an iterator, bafflingly -DMT
PolarEdge incident_edge;
boolean is_first; // True iff polar_point is the first_point of the
// PolarEdge pointed to by
// incident_edge.
PolarPointWithEdgeInfo() {
super();
}
void set_polar_point(PolarPoint ppoint_temp) {
set_polar_origin(ppoint_temp.polar_origin);
set_x(ppoint_temp.x);
set_y(ppoint_temp.y);
set_range(ppoint_temp.range);
set_bearing(ppoint_temp.bearing);
}
void set(PolarPointWithEdgeInfo ppoint_temp) {
set_polar_origin(ppoint_temp.polar_origin);
set_x(ppoint_temp.x);
set_y(ppoint_temp.y);
set_range(ppoint_temp.range);
set_bearing(ppoint_temp.bearing);
incident_edge = ppoint_temp.incident_edge;
is_first = ppoint_temp.is_first;
}
// The operator < is the same as for PolarPoint with one
// exception. If two vertices have equal coordinates, but one is
// the first point of its respective edge and the other is the
// second point of its respective edge, then the vertex which is
// the second point of its respective edge is considered
// lexicographically smaller.
public int compareTo(VLPoint point2) {
if (!(point2 instanceof PolarPointWithEdgeInfo)) {
return super.compareTo(point2);
}
PolarPointWithEdgeInfo polar_point2 = (PolarPointWithEdgeInfo) point2;
int bearingComp = bearing.compareTo(polar_point2.bearing);
if (bearingComp < 0)
return -1;
else if (bearingComp == 0) {
if (range < polar_point2.range) {
return -1;
} else if (range > polar_point2.range) {
return 1;
} else {
if (!is_first && polar_point2.is_first) {
return -1;
} else if (is_first && !polar_point2.is_first) {
return 1;
}
return 0;
}
}
return 1;
}
public PolarPointWithEdgeInfo clone() {
PolarPointWithEdgeInfo temp = new PolarPointWithEdgeInfo();
temp.set(this);
return temp;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy