Skip to content
Snippets Groups Projects
Commit 2112ad97 authored by Luc Maisonobe's avatar Luc Maisonobe
Browse files

First working version of BasicScanAlgorithm.

The case where the line-of-sight enters the Digital Elevation Model in
one tile on top and exit it in another tile on bottom is not tested yet.
parent 875fb674
No related branches found
No related tags found
Loading
......@@ -81,12 +81,12 @@ public class BasicScanAlgorithm implements IntersectionAlgorithm {
scannedTiles.clear();
// compute entry and exit points
entryPoint = ellipsoid.transform(ellipsoid.pointAtAltitude(position, los, Double.isInfinite(hMin) ? 0.0 : hMin),
entryPoint = ellipsoid.transform(ellipsoid.pointAtAltitude(position, los, Double.isInfinite(hMax) ? 0.0 : hMax),
ellipsoid.getBodyFrame(), null);
final SimpleTile entryTile = cache.getTile(entryPoint.getLatitude(), entryPoint.getLongitude());
addIfNotPresent(scannedTiles, entryTile);
exitPoint = ellipsoid.transform(ellipsoid.pointAtAltitude(position, los, Double.isInfinite(hMax) ? 0.0 : hMax),
exitPoint = ellipsoid.transform(ellipsoid.pointAtAltitude(position, los, Double.isInfinite(hMin) ? 0.0 : hMin),
ellipsoid.getBodyFrame(), null);
final SimpleTile exitTile = cache.getTile(exitPoint.getLatitude(), exitPoint.getLongitude());
addIfNotPresent(scannedTiles, entryTile);
......@@ -116,8 +116,8 @@ public class BasicScanAlgorithm implements IntersectionAlgorithm {
GeodeticPoint intersectionGP = null;
double intersectionDot = Double.POSITIVE_INFINITY;
for (final SimpleTile tile : scannedTiles) {
for (int i = latitudeIndex(tile, minLatitude); i < latitudeIndex(tile, maxLatitude); ++i) {
for (int j = longitudeIndex(tile, minLongitude); j < longitudeIndex(tile, maxLongitude); ++j) {
for (int i = latitudeIndex(tile, minLatitude); i <= latitudeIndex(tile, maxLatitude); ++i) {
for (int j = longitudeIndex(tile, minLongitude); j <= longitudeIndex(tile, maxLongitude); ++j) {
GeodeticPoint gp = tile.pixelIntersection(entryPoint, exitPoint, i, j);
if (gp != null) {
final Vector3D point = ellipsoid.transform(gp);
......
......@@ -214,7 +214,7 @@ public class BasicScanAlgorithmTest {
Vector3D position = state.getPVCoordinates(earth.getBodyFrame()).getPosition();
Vector3D los = groundP.subtract(position);
GeodeticPoint result = basicScan.intersection(earth, position, los);
Assert.assertEquals(0.0, groundP.distance(earth.transform(result)), 0.03);
Assert.assertEquals(0.0, groundP.distance(earth.transform(result)), 1.0e-10);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment