use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.
the class TileMath method zoomLevelForExtents.
/**
* Returns the maximum zoom level at which the given extents will fit inside
* the map of the given size
*
* @param extent
* @param mapWidth
* @param mapHeight
* @return
*/
public static int zoomLevelForExtents(Extents extent, int mapWidth, int mapHeight) {
int zoomLevel = 1;
do {
Point upperLeft = fromLatLngToPixel(new AiLatLng(extent.getMaxLat(), extent.getMinLon()), zoomLevel);
Point lowerRight = fromLatLngToPixel(new AiLatLng(extent.getMinLat(), extent.getMaxLon()), zoomLevel);
int extentWidth = lowerRight.getX() - upperLeft.getX();
if (extentWidth > mapWidth) {
return zoomLevel - 1;
}
int extentHeight = lowerRight.getY() - upperLeft.getY();
if (extentHeight > mapHeight) {
return zoomLevel - 1;
}
zoomLevel++;
} while (zoomLevel < MAX_ZOOM);
return zoomLevel;
}
use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.
the class PathUtils method addRingToPath.
private static void addRingToPath(TiledMap map, GeneralPath path, Coordinate[] coordinates) {
System.out.println("--ring--");
float lastX = Float.NaN;
float lastY = Float.NaN;
for (int j = 0; j != coordinates.length; ++j) {
Point point = map.fromLatLngToPixel(new AiLatLng(coordinates[j].y, coordinates[j].x));
float x = point.getX();
float y = point.getY();
if (x != lastX || y != lastY) {
System.out.println(point.getX() + "," + point.getY());
if (j == 0) {
path.moveTo(x, y);
} else {
path.lineTo(x, y);
}
}
lastX = x;
lastY = y;
}
path.closePath();
}
use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.
the class Cluster method bboxCenter.
/**
* @return The weighted centroid of the cluster
*/
public Point bboxCenter() {
int minX = Integer.MAX_VALUE;
int minY = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
int maxY = Integer.MIN_VALUE;
for (PointValue pointValue : pointValues) {
Point p = pointValue.getPx();
if (p.getX() < minX) {
minX = p.getX();
}
if (p.getY() < minY) {
minY = p.getY();
}
if (p.getX() > maxX) {
maxX = p.getX();
}
if (p.getY() > maxY) {
maxY = p.getY();
}
}
return new Point((minX + maxX) / 2, (minY + maxY) / 2);
}
use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.
the class KMeans method cluster.
public static List<Cluster> cluster(List<MarkerGraph.Node> nodes, int numClusters) {
List<Cluster> clusters = new ArrayList<Cluster>(numClusters);
// sanity check
if (numClusters > nodes.size() || nodes.size() == 0) {
throw new IllegalArgumentException();
}
// randomize
Collections.shuffle(nodes);
// choose random centers
Point[] centers = new Point[numClusters];
for (int i = 0; i != numClusters; ++i) {
centers[i] = nodes.get(i).getPoint();
}
// assign initial cluster membership
int[] membership = new int[nodes.size()];
assignClosest(nodes, centers, membership);
// execute k-means algorithm until we achieve convergence
boolean changed;
do {
computeCenters(nodes, membership, centers);
changed = assignClosest(nodes, centers, membership);
} while (changed);
// create clusters
for (int i = 0; i != numClusters; ++i) {
clusters.add(new Cluster(centers[i]));
}
for (int j = 0; j != nodes.size(); ++j) {
(clusters.get(membership[j])).addNode(nodes.get(j));
}
return clusters;
}
use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.
the class CircleMathTest method testNoIntersection.
@Test
public void testNoIntersection() {
Point a = new Point(0, 0);
Point b = new Point(5, 0);
Assert.assertEquals(0.0, CircleMath.intersectionArea(a, b, 1, 2), DELTA);
}
Aggregations