Implemented and tested to check if a point is inside or outside of a boundary using a ray tracing algorithm. The function is public static for a GPSCoordinate and takes a list of GPSCoordinates and the comparing coordinate. #story[873]
parent
3b2f99b7d7
commit
a13899b6a7
@ -0,0 +1,121 @@
|
|||||||
|
package seng302.Model;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static junit.framework.TestCase.assertTrue;
|
||||||
|
import static junit.framework.TestCase.assertFalse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by jjg64 on 11/05/17.
|
||||||
|
*/
|
||||||
|
public class GPSCoordinateTest {
|
||||||
|
List<GPSCoordinate> boundary;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void init() {
|
||||||
|
boundary = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -------
|
||||||
|
* | |
|
||||||
|
* | * |
|
||||||
|
* -------
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void insideSquareTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(0, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(2, 8);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertTrue(inside);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -------
|
||||||
|
* | |
|
||||||
|
* * | |
|
||||||
|
* -------
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void outsideSquareTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(0, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(-2, 8);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertFalse(inside);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* -------
|
||||||
|
* | |
|
||||||
|
* | |
|
||||||
|
* *------
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void edgeSquareTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 0));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(0, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(0, 0);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertFalse(inside);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void insideShapeWithObtuseAnglesTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(4, 4));
|
||||||
|
boundary.add(new GPSCoordinate(7, 2));
|
||||||
|
boundary.add(new GPSCoordinate(9, 5));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(6, 6));
|
||||||
|
boundary.add(new GPSCoordinate(2, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(5, 5);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertTrue(inside);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void outsideShapeWithObtuseAnglesTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(4, 4));
|
||||||
|
boundary.add(new GPSCoordinate(7, 2));
|
||||||
|
boundary.add(new GPSCoordinate(9, 5));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(6, 6));
|
||||||
|
boundary.add(new GPSCoordinate(2, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(4, 3);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertFalse(inside);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void edgeOfShapeWithObtuseAnglesTest() {
|
||||||
|
boundary.add(new GPSCoordinate(0, 0));
|
||||||
|
boundary.add(new GPSCoordinate(4, 4));
|
||||||
|
boundary.add(new GPSCoordinate(7, 2));
|
||||||
|
boundary.add(new GPSCoordinate(9, 5));
|
||||||
|
boundary.add(new GPSCoordinate(10, 10));
|
||||||
|
boundary.add(new GPSCoordinate(6, 6));
|
||||||
|
boundary.add(new GPSCoordinate(2, 10));
|
||||||
|
|
||||||
|
GPSCoordinate coordinate = new GPSCoordinate(2, 10);
|
||||||
|
boolean inside = GPSCoordinate.isInsideBoundary(coordinate, boundary);
|
||||||
|
assertFalse(inside);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue