[Polycasso-commit] SF.net SVN: polycasso:[65] trunk/polycasso/src/com/mebigfatguy/polycasso/ Improv
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2009-11-26 23:12:57
|
Revision: 65
http://polycasso.svn.sourceforge.net/polycasso/?rev=65&view=rev
Author: dbrosius
Date: 2009-11-26 23:12:46 +0000 (Thu, 26 Nov 2009)
Log Message:
-----------
make addpoint add the point in the bounding box between the point before, and the point after the insertion point.
Modified Paths:
--------------
trunk/polycasso/src/com/mebigfatguy/polycasso/Improver.java
Modified: trunk/polycasso/src/com/mebigfatguy/polycasso/Improver.java
===================================================================
--- trunk/polycasso/src/com/mebigfatguy/polycasso/Improver.java 2009-11-26 22:59:49 UTC (rev 64)
+++ trunk/polycasso/src/com/mebigfatguy/polycasso/Improver.java 2009-11-26 23:12:46 UTC (rev 65)
@@ -34,6 +34,7 @@
*/
public class Improver {
public static final int NUM_POLYS = 50;
+ public static final int MAX_PT_MOVEMENT = 20;
private Dimension imageSize;
private List<PolygonData> polygons = null;
@@ -119,9 +120,13 @@
if (polygon.npoints <= PolygonData.MAX_POINTS) {
polygon.addPoint(0, 0);
int insPos = r.nextInt(polygon.npoints);
- int x = r.nextInt(imageSize.width);
- int y = r.nextInt(imageSize.height);
+ int lastPt = (insPos + polygon.npoints - 1) % polygon.npoints;
+ int maxX = Math.max(MAX_PT_MOVEMENT, Math.abs(polygon.xpoints[lastPt] - polygon.xpoints[insPos]));
+ int maxY = Math.max(MAX_PT_MOVEMENT, Math.abs(polygon.ypoints[lastPt] - polygon.ypoints[insPos]));
+ int x = r.nextInt(maxX) + Math.min(polygon.xpoints[lastPt], polygon.xpoints[insPos]);
+ int y = r.nextInt(maxY) + Math.min(polygon.ypoints[lastPt], polygon.ypoints[insPos]);
+
System.arraycopy(polygon.xpoints, insPos, polygon.xpoints, insPos + 1, polygon.npoints - insPos - 1);
polygon.xpoints[insPos] = x;
System.arraycopy(polygon.ypoints, insPos, polygon.ypoints, insPos + 1, polygon.npoints - insPos - 1);
@@ -158,8 +163,8 @@
PolygonData pd = (PolygonData)polygons.get(idx).clone();
Polygon polygon = pd.getPolygon();
int movePos = r.nextInt(polygon.npoints);
- int moveX = r.nextInt(20) - 10;
- int moveY = r.nextInt(20) - 10;
+ int moveX = r.nextInt(MAX_PT_MOVEMENT * 2) - MAX_PT_MOVEMENT;
+ int moveY = r.nextInt(MAX_PT_MOVEMENT * 2) - MAX_PT_MOVEMENT;
polygon.xpoints[movePos] += moveX;
polygon.ypoints[movePos] += moveY;
clipToRange(0, imageSize.width, polygon.xpoints[movePos]);
@@ -205,7 +210,7 @@
double midX = bbox.getCenterX();
double midY = bbox.getCenterY();
- int shrinkFactor = r.nextInt(5);
+ int shrinkFactor = r.nextInt(MAX_PT_MOVEMENT);
for (int i = 0; i < polygon.npoints; i++) {
polygon.xpoints[i] += (polygon.xpoints[i] < midX) ? shrinkFactor : -shrinkFactor;
polygon.ypoints[i] += (polygon.ypoints[i] < midY) ? shrinkFactor : -shrinkFactor;
@@ -223,7 +228,7 @@
double midX = bbox.getCenterX();
double midY = bbox.getCenterY();
- int expandFactor = r.nextInt(5);
+ int expandFactor = r.nextInt(MAX_PT_MOVEMENT);
for (int i = 0; i < polygon.npoints; i++) {
polygon.xpoints[i] += (polygon.xpoints[i] < midX) ? -expandFactor : expandFactor;
polygon.ypoints[i] += (polygon.ypoints[i] < midY) ? -expandFactor : expandFactor;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|