EOS 2  1.1.0
Einfache Objektbasierte Sprache
Shape.java
gehe zur Dokumentation dieser Datei
1 package de.lathanda.eos.game.geom;
2 
3 import de.lathanda.eos.game.Sprite;
4 import de.lathanda.eos.base.Picture;
5 import de.lathanda.eos.base.math.Point;
6 import de.lathanda.eos.base.math.Vector;
7 import java.text.MessageFormat;
8 
38 public abstract class Shape implements Comparable<Shape> {
39 
43  protected double left;
47  protected double bottom;
51  protected double right;
55  protected double top;
59  protected double angle;
63  protected Point p;
67  protected Integer id; // needed as unique id
71  protected Sprite sprite;
72 
76  protected Shape() {
77  }
82  public Point getCenter() {
83  return p;
84  }
91  public void setSprite(Sprite sprite) {
92  this.sprite = sprite;
93  this.id = sprite.getID();
94  }
95 
101  public Integer getID() {
102  return id;
103  }
104 
110  public Sprite getSprite() {
111  return sprite;
112  }
113 
119  public void setAngle(double angle) {
120  this.angle = angle;
121  angleChanged();
122  }
123 
129  public double getAngle() {
130  return angle;
131  }
132 
139  public void rotate(double angle) {
140  this.angle += angle;
141  this.angleChanged();
142  }
143 
149  public double getLeft() {
150  return left;
151  }
152 
158  public double getRight() {
159  return right;
160  }
161 
167  public double getBottom() {
168  return bottom;
169  }
170 
176  public double getTop() {
177  return top;
178  }
179 
185  public double getWidth() {
186  return getRight() - getLeft();
187  }
188 
194  public double getHeight() {
195  return getTop() - getBottom();
196  }
197 
202  @Override
203  public int compareTo(Shape o) {
204  return id - o.id;
205  }
206 
213  public boolean contains(Point p) {
214  return contains(p.getX(), p.getY());
215  }
216 
224  public boolean intersects(Shape b) {
225  return Intersection.intersects(this, b);
226  }
227 
235  public double distance(Shape b) {
236  return Distance.distance(this, b);
237  }
238 
246  public abstract boolean contains(double x, double y);
247 
254  public final double getDistance(Point p) {
255  return getDistance(p.getX(), p.getY());
256  }
257 
265  public abstract double getDistance(double x, double y);
266 
272  protected abstract Types getOutlineType();
273 
274  /* (non-Javadoc)
275  * @see de.lathanda.sgl.geom2d.Point#getX()
276  */
277  public double getX() {
278  return p.getX();
279  }
280 
281  /* (non-Javadoc)
282  * @see de.lathanda.sgl.geom2d.Point#getY()
283  */
284  public double getY() {
285  return p.getY();
286  }
287 
288  /* (non-Javadoc)
289  * @see de.lathanda.sgl.geom2d.Point#moveTo(double, double)
290  */
291  public void moveTo(double x, double y) {
292  p.moveTo(x, y);
293  positionChanged();
294  }
295 
296  /* (non-Javadoc)
297  * @see de.lathanda.sgl.geom2d.Point#moveTo(de.lathanda.sgl.geom2d.Point)
298  */
299  public void moveTo(Point p) {
300  this.p.moveTo(p);
301  positionChanged();
302  }
303 
304  /* (non-Javadoc)
305  * @see de.lathanda.sgl.geom2d.Point#move(double, double)
306  */
307  public void move(double dX, double dY) {
308  p.move(dX, dY);
309  positionChanged();
310  }
311 
312  /* (non-Javadoc)
313  * @see de.lathanda.sgl.geom2d.Point#move(de.lathanda.sgl.geom2d.Vector)
314  */
315  public void move(Vector v) {
316  p.move(v);
317  positionChanged();
318  }
319 
325  public void move(double length) {
326  move(new Vector(angle).setLength(length));
327  }
328 
332  protected abstract void positionChanged();
333 
337  protected abstract void angleChanged();
338 
344  @Override
345  public String toString() {
346  return MessageFormat.format("({0}|{1})/({2}|{3})", new Object[]{left,
347  bottom, right, top});
348  }
349  public abstract void draw(Picture picture);
350 }
void moveTo(double x, double y)
Definition: Point.java:151
void move(double dX, double dY)
Definition: Point.java:130
final Integer getID()
Definition: Sprite.java:99
Entfernungsberechnung.
Definition: Distance.java:12
static double distance(Shape a, Shape b)
Definition: Distance.java:22
static boolean intersects(Shape a, Shape b)
double angle
Drehwinkel.
Definition: Shape.java:59
boolean intersects(Shape b)
Definition: Shape.java:224
Sprite sprite
Zugehöriges Weltobjekt.
Definition: Shape.java:71
double distance(Shape b)
Definition: Shape.java:235
abstract Types getOutlineType()
void move(double dX, double dY)
Definition: Shape.java:307
double bottom
Untere Grenze.
Definition: Shape.java:47
double top
Obere Grenze.
Definition: Shape.java:55
abstract double getDistance(double x, double y)
abstract boolean contains(double x, double y)
final double getDistance(Point p)
Definition: Shape.java:254
void rotate(double angle)
Definition: Shape.java:139
double left
Linke Grenze.
Definition: Shape.java:43
double right
Rechte Grenze.
Definition: Shape.java:51
boolean contains(Point p)
Definition: Shape.java:213
void setAngle(double angle)
Definition: Shape.java:119
Integer id
ID des zugehörigen Weltobjekts.
Definition: Shape.java:67
void move(double length)
Definition: Shape.java:325
abstract void draw(Picture picture)
void moveTo(double x, double y)
Definition: Shape.java:291
void setSprite(Sprite sprite)
Definition: Shape.java:91
Impressum