The course points can now be rotated,

- Created markToGPSCoordinate Class
- Added Rotation to marks
#story[1092]
main
Fan-Wu Yang 8 years ago
parent f23c3f854d
commit 2ce1c0786e

@ -7,6 +7,7 @@ import shared.exceptions.XMLReaderException;
import shared.model.CompoundMark;
import shared.model.Corner;
import shared.model.GPSCoordinate;
import shared.model.Mark;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@ -56,21 +57,9 @@ public class RaceXMLCreator {
Race.Course.CompoundMark cm = raceFactory.createRaceCourseCompoundMark();
cm.setName(mark.getName());
cm.setCompoundMarkID(String.valueOf(mark.getId()));
if (mark.getMark1() != null){
Race.Course.CompoundMark.Mark m1 = raceFactory.createRaceCourseCompoundMarkMark();
m1.setName(mark.getMark1().getName());
m1.setTargetLat(String.valueOf(mark.getMark1().getPosition().getLatitude()));
m1.setTargetLng(String.valueOf(mark.getMark1().getPosition().getLongitude()));
m1.setSourceID(String.valueOf(mark.getMark1().getSourceID()));
cm.getMark().add(m1);
}
//make this not copy paste later but just need the concept working right now
if (mark.getMark2() != null){
Race.Course.CompoundMark.Mark m2 = raceFactory.createRaceCourseCompoundMarkMark();
m2.setName(mark.getMark1().getName());
m2.setTargetLat(String.valueOf(mark.getMark1().getPosition().getLatitude()));
m2.setTargetLng(String.valueOf(mark.getMark1().getPosition().getLongitude()));
m2.setSourceID(String.valueOf(mark.getMark1().getSourceID()));
cm.getMark().add(setMarkFromMark(raceFactory, mark.getMark1()));
Race.Course.CompoundMark.Mark m2 = setMarkFromMark(raceFactory, mark.getMark2());
if (m2 != null) {
cm.getMark().add(m2);
}
course.getCompoundMark().add(cm);
@ -91,6 +80,18 @@ public class RaceXMLCreator {
return race;
}
public static Race.Course.CompoundMark.Mark setMarkFromMark(RaceFactory raceFactory, Mark mark){
if (mark != null) {
Race.Course.CompoundMark.Mark m = raceFactory.createRaceCourseCompoundMarkMark();
m.setName(mark.getName());
m.setTargetLat(String.valueOf(mark.getPosition().getLatitude()));
m.setTargetLng(String.valueOf(mark.getPosition().getLongitude()));
m.setSourceID(String.valueOf(mark.getSourceID()));
return m;
}
return null;
}
public static String alterRaceToWind(String s, double degrees) throws XMLReaderException, InvalidRaceDataException, JAXBException {
RaceXMLReader reader = new RaceXMLReader(s, XMLFileType.ResourcePath);
@ -103,6 +104,15 @@ public class RaceXMLCreator {
limit.setLon(String.valueOf(rotatedLim.getLongitude()));
}
for(Race.Course.CompoundMark compoundMark: race.getCourse().getCompoundMark()){
for (Race.Course.CompoundMark.Mark mark: compoundMark.getMark()){
System.out.println(mark);
GPSCoordinate rotatedMark = rotate(center, markToGPSCoordinate(mark), degrees);
mark.setTargetLat(String.valueOf(rotatedMark.getLatitude()));
mark.setTargetLng(String.valueOf(rotatedMark.getLongitude()));
}
}
JAXBContext context = JAXBContext.newInstance(Race.class);
Marshaller jaxbMarshaller = context.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
@ -127,6 +137,10 @@ public class RaceXMLCreator {
return new GPSCoordinate(resLat, resLon);
}
public static GPSCoordinate markToGPSCoordinate(Race.Course.CompoundMark.Mark mark){
return new GPSCoordinate(Double.parseDouble(mark.getTargetLat()), Double.parseDouble(mark.getTargetLng()));
}
public static GPSCoordinate getCenter(Race race){
double avgLat = 0;
double avgLng = 0;

Loading…
Cancel
Save