Merge remote-tracking branch 'origin/simulator_dev' into simulator_dev

This commit is contained in:
Christopher Ronnewinkel (D036654) committed 2012-11-26 17:36:44 +01:00
commit 6c45ad5948
5 files changed
+71 -33

No files matched your search

@@ -335,10 +335,10 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
return windFieldDTO;
}
private void getWindLinesFromStartLine(final WindFieldGenerator wf, final WindFieldDTO windFieldDTO, final TimePoint startTime,
private void getWindLinesFromStartLine(final WindFieldGenerator wf, WindFieldDTO windFieldDTO, final TimePoint startTime,
final TimePoint endTime, final TimePoint timeStep) {
final Position[][] positionGrid = wf.getPositionGrid();
Position[][] positionGrid = wf.getPositionGrid();
WindLinesDTO windLinesDTO = windFieldDTO.getWindLinesDTO();
if (windLinesDTO == null) {
windLinesDTO = new WindLinesDTO();
@@ -346,23 +346,36 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
}
if (positionGrid != null && positionGrid.length > 0 && positionGrid[0].length > 2) {
for (int j = 1; j < positionGrid[0].length - 1; ++j) {
// for (int j = 0; j < positionGrid[0].length; ++j) {
TimePoint t = startTime;
final PositionDTO startPosition = new PositionDTO(positionGrid[0][j].getLatDeg(),
positionGrid[0][j].getLngDeg());
Position seed = positionGrid[0][j];
PositionDTO startPosition = new PositionDTO(seed.getLatDeg(),
seed.getLngDeg());
while (t.compareTo(endTime) <= 0) {
final TimedPosition tp = new TimedPositionImpl(t, positionGrid[0][j]);
final Path p = wf.getLine(tp, false /*forward*/);
if (p != null) {
final List<PositionDTO> positions = new ArrayList<PositionDTO>();
for (final TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
final Position position = pathPoint.getPosition();
final PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
TimedPosition tp = new TimedPositionImpl(t, seed);
List<PositionDTO> positions = new ArrayList<PositionDTO>();
// Get the wind "before" the seed to cover the grid
Path p = wf.getLine(tp, true /*forward*/);
if (p != null) {
for (TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
Position position = pathPoint.getPosition();
if (!position.equals(seed)) { //Seed is added in the next loop
PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
positions.add(positionDTO);
}
}
}
//Get the wind "after" the seed
p = wf.getLine(tp, false /*forward*/);
if (p != null) {
for (TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
Position position = pathPoint.getPosition();
PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
positions.add(positionDTO);
}
windLinesDTO.addWindLine(startPosition, tp.getTimePoint().asMillis(), positions);
}
windLinesDTO.addWindLine(startPosition, tp.getTimePoint().asMillis(), positions);
t = new MillisecondsTimePoint(t.asMillis() + timeStep.asMillis());
}
}
@@ -372,35 +385,47 @@ public class SimulatorServiceImpl extends RemoteServiceServlet implements Simula
//logger.info("Added : " + windFieldDTO.getWindLinesDTO().getWindLinesMap().size() + " wind lines");
}
private void getWindLinesFromEndLine(final WindFieldGenerator wf, final WindFieldDTO windFieldDTO, final TimePoint startTime,
private void getWindLinesFromEndLine(final WindFieldGenerator wf, WindFieldDTO windFieldDTO, final TimePoint startTime,
final TimePoint endTime, final TimePoint timeStep) {
final Position[][] positionGrid = wf.getPositionGrid();
Position[][] positionGrid = wf.getPositionGrid();
WindLinesDTO windLinesDTO = windFieldDTO.getWindLinesDTO();
if (windLinesDTO == null) {
windLinesDTO = new WindLinesDTO();
windFieldDTO.setWindLinesDTO(windLinesDTO);
}
if (positionGrid != null && positionGrid.length > 1 && positionGrid[0].length > 2) {
final int lastRowIndex = positionGrid.length - 1;
int lastRowIndex = positionGrid.length - 1;
for (int j = 1; j < positionGrid[lastRowIndex].length - 1; ++j) {
TimePoint t = startTime;
final PositionDTO startPosition = new PositionDTO(positionGrid[lastRowIndex][j].getLatDeg(),
positionGrid[lastRowIndex][j].getLngDeg());
Position seed = positionGrid[lastRowIndex][j];
PositionDTO startPosition = new PositionDTO(seed.getLatDeg(),
seed.getLngDeg());
while (t.compareTo(endTime) <= 0) {
final TimedPosition tp = new TimedPositionImpl(t, positionGrid[lastRowIndex][j]);
final Path p = wf.getLine(tp, true /*forward*/);
if (p != null) {
final List<PositionDTO> positions = new ArrayList<PositionDTO>();
for (final TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
final Position position = pathPoint.getPosition();
final PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
TimedPosition tp = new TimedPositionImpl(t, seed);
List<PositionDTO> positions = new ArrayList<PositionDTO>();
//Get the wind before the seed
Path p = wf.getLine(tp, false /*forward*/);
if (p != null) {
for (TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
Position position = pathPoint.getPosition();
if (!position.equals(seed)) { // seed will be added later in the next loop
PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
positions.add(positionDTO);
}
}
}
p = wf.getLine(tp, true /*forward*/);
if (p != null) {
for (TimedPositionWithSpeed pathPoint : p.getPathPoints()) {
Position position = pathPoint.getPosition();
PositionDTO positionDTO = new PositionDTO(position.getLatDeg(), position.getLngDeg());
positions.add(positionDTO);
}
windLinesDTO.addWindLine(startPosition, tp.getTimePoint().asMillis(), positions);
}
windLinesDTO.addWindLine(startPosition, tp.getTimePoint().asMillis(), positions);
t = new MillisecondsTimePoint(t.asMillis() + timeStep.asMillis());
}
}
@@ -42,8 +42,11 @@ public class PositionDTO implements IsSerializable {
if (o == null) {
return false;
} else {
return o instanceof PositionDTO && this.latDeg == ((PositionDTO) o).latDeg
&& this.lngDeg == ((PositionDTO) o).lngDeg;
if (o instanceof PositionDTO) {
PositionDTO other = (PositionDTO) o;
return Math.abs(this.latDeg-other.latDeg) <= 1e-5 && Math.abs(this.lngDeg-other.lngDeg) <= 1e-5;
}
return false;
}
}
@@ -11,6 +11,7 @@ import java.util.SortedMap;
import java.util.TreeMap;
import java.util.logging.Logger;
import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.geom.Point;
@@ -161,6 +162,9 @@ public class WindFieldCanvasOverlay extends FullCanvasOverlay implements TimeLis
protected void drawWindField(final List<WindDTO> windDTOList) {
clear();
Context2d context2d = canvas.getContext2d();
context2d.setGlobalAlpha(0.4);
if (windDTOList != null && windDTOList.size() > 0) {
Iterator<WindDTO> windDTOIter = windDTOList.iterator();
int index = 0;
@@ -172,12 +172,18 @@ public class WindLineCanvasOverlay extends FullCanvasOverlay implements TimeList
while (positionDTOIter.hasNext()) {
PositionDTO positionDTO = positionDTOIter.next();
if (prevPositionDTO != null) {
if (checkPointInGrid(prevPositionDTO) && checkPointInGrid(positionDTO) ) {
boolean previousPointInGrid = checkPointInGrid(prevPositionDTO);
boolean currentPointInGrid = checkPointInGrid(positionDTO);
if (previousPointInGrid && currentPointInGrid) {
drawLine(prevPositionDTO, positionDTO);
} else {
PositionDTO pointOnBoundary = getPointOnBoundary(prevPositionDTO, positionDTO);
if (pointOnBoundary != null) {
drawLine(prevPositionDTO, pointOnBoundary);
if (previousPointInGrid) {
drawLine(prevPositionDTO, pointOnBoundary);
} else if (currentPointInGrid) {
drawLine(pointOnBoundary, positionDTO);
}
}
}
}
@@ -25,6 +25,6 @@
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="false"/>
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.ess40.resultimport@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.kiworesultimport@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.udpconnector@default:default,com.sap.sailing.www.events@default:default,com.sap.sailing.www@default:default,com.sap.sailing.xcelsiusadapter@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
<stringAttribute key="workspace_bundles" value="com.google.gwt.osgi@default:default,com.googlecode.java-diff-utils@default:default,com.mongodb.driver@default:default,com.sap.sailing.declination@default:default,com.sap.sailing.domain.common@default:default,com.sap.sailing.domain.persistence@default:default,com.sap.sailing.domain.swisstimingadapter.persistence@default:default,com.sap.sailing.domain.swisstimingadapter@default:default,com.sap.sailing.domain.tractracadapter.persistence@default:default,com.sap.sailing.domain.tractracadapter@default:default,com.sap.sailing.domain@default:default,com.sap.sailing.expeditionconnector@default:default,com.sap.sailing.freg.resultimport@default:default,com.sap.sailing.geocoding@default:default,com.sap.sailing.gwt.ui@default:default,com.sap.sailing.mongodb@default:default,com.sap.sailing.operationaltransformation@default:default,com.sap.sailing.server.replication@default:default,com.sap.sailing.server@default:default,com.sap.sailing.simulator@default:default,com.sap.sailing.udpconnector@default:default,com.tractrac.clientmodule@default:default,org.json.simple@default:default,org.moxieapps.gwt.highcharts@default:default"/>
<stringAttribute key="yk-options" value="&#13;&#10;additional-options2=onexit\=snapshot&#13;&#10;"/>
</launchConfiguration>