115 lines
1.6 KiB
Java
115 lines
1.6 KiB
Java
package lsystem.screen.gl2d;
|
|
|
|
public class Point2 {
|
|
private float x;
|
|
private float y;
|
|
|
|
public Point2 () {
|
|
|
|
}
|
|
|
|
public Point2 (float x, float y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
|
|
public Point2 (Point2 old, int angle) {
|
|
angle = compactAngle(angle);
|
|
//Point a = new Point();
|
|
//x = getNewOrigin(old, angle, 0.1f);
|
|
getNewOrigin(old, angle, 0.1f);
|
|
}
|
|
|
|
public float getX() {
|
|
return x;
|
|
}
|
|
|
|
public void setX(float x) {
|
|
this.x = x;
|
|
}
|
|
|
|
public float getY() {
|
|
return y;
|
|
}
|
|
|
|
public void setY(float y) {
|
|
this.y = y;
|
|
}
|
|
|
|
public void getNewOrigin (Point2 old, int angle, float echelle) {
|
|
|
|
int newX=0, newY=0;
|
|
switch (angle) {
|
|
case 0:
|
|
newX = 1;
|
|
newY = 1;
|
|
break;
|
|
case 45:
|
|
newX = 1;
|
|
newY = 0;
|
|
break;
|
|
case 90:
|
|
newX = 1;
|
|
newY = -1;
|
|
break;
|
|
case 135:
|
|
newX = 0;
|
|
newY = -1;
|
|
break;
|
|
case 180:
|
|
newX = -1;
|
|
newY = -1;
|
|
break;
|
|
case 225:
|
|
newX = -1;
|
|
newY = 0;
|
|
break;
|
|
case 270:
|
|
newX = -1;
|
|
newY = 1;
|
|
break;
|
|
case 315:
|
|
newX = 0;
|
|
newY = 1;
|
|
break;
|
|
}
|
|
|
|
this.x = old.getX() + echelle * newX;
|
|
this.y+= old.getY() + echelle * newY;
|
|
//return old;
|
|
}
|
|
|
|
public String toString () {
|
|
return "("+this.x+";"+this.y+")";
|
|
}
|
|
|
|
public static int compactAngle (int angle) {
|
|
angle = angle - ((angle / 360) * 360);
|
|
switch (angle) {
|
|
case -315:
|
|
angle = 45;
|
|
break;
|
|
case -270:
|
|
angle = 90;
|
|
break;
|
|
case -225:
|
|
angle = 135;
|
|
break;
|
|
case -180:
|
|
angle = 180;
|
|
break;
|
|
case -135:
|
|
angle = 225;
|
|
break;
|
|
case -90:
|
|
angle = 270;
|
|
break;
|
|
case -45:
|
|
angle = 315;
|
|
break;
|
|
}
|
|
return angle;
|
|
}
|
|
|
|
}
|