---
title: 'Inselraus: Punkt in einer Form, Schnitt von Linien, Abstand Punkt/Linie'
url: 'https://tutego.de/blog/javainsel/2013/11/inselraus-punkt-in-einer-form-schnitt-von-linien-abstand-punktlinie'
markdown: 'https://tutego.de/blog/javainsel/2013/11/inselraus-punkt-in-einer-form-schnitt-von-linien-abstand-punktlinie.md'
date: '2013-11-29'
description: 'Die unterschiedlichen Klassen für die geometrischen Formen aus dem Java 2D-Paket besitzen Methoden, um zum Beispiel festzustellen, ob ein Punkt in einer Form liegt. interface java.awt.Shape boolean contains(int x, int y ) boolean contains(Point2D p) Liefert true, wenn der Punkt in der Form liegt. …'
taxonomy:
  category:
    - Allgemein
---

# Inselraus: Punkt in einer Form, Schnitt von Linien, Abstand Punkt/Linie

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Inselraus: Punkt in einer Form, Schnitt von Linien, Abstand Punkt/Linie

29.11.2013 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Die unterschiedlichen Klassen für die geometrischen Formen aus dem Java 2D-Paket besitzen Methoden, um zum Beispiel festzustellen, ob ein Punkt in einer Form liegt.

```
interface java.awt.Shape
```

- `boolean contains(int x, int y )`
- `boolean contains(Point2D p)`Liefert true, wenn der Punkt in der Form liegt.
- `boolean contains(int x, int y, int w, int h)`
- `boolean contains(Rectangle2D r)`Liefert true, wenn das beschriebene Rechteck komplett in der Form liegt.

Besonders praktisch ist die Methode `contains(…)` für Polygone.\[\[1\]\]() Sie arbeitet aber nur korrekt für Punkte innerhalb der eingeschlossenen Fläche. Bei Abfrage von Punkten, die den Eckpunkten entsprechen, kommen immer sehr willkürliche Werte heraus – und genauso bei der Abfrage, ob die Punkte auf der Linie zum Innenraum gehören oder nicht.

Die Klasse Point2D berechnet den Abstand zweier Punkte mit den Methoden:

- `double distance(double PX, double PY)`
- `static double distance(double X1, double Y1, double X2, double Y2)`
- `double distance(Point2D pt)`
- `double distanceSq(double PX, double PY)`
- `static double distanceSq(double X1, double Y1, double X2, double Y2)`
- `double distanceSq(Point2D pt)`

Verwandte Methoden zur Berechnung des Abstands eines Punktes zur Line bietet auch Line2D:

- `double ptLineDist(double PX, double PY)`
- `static double ptLineDist(double X1, double Y1, double X2, double Y2, double PX, double PY)`
- `double ptLineDist(Point2D pt)`
- `double ptLineDistSq(double PX, double PY)`
- `static double ptLineDistSq(double X1, double Y1, double X2, double Y2, double PX, double PY)`
- `double ptLineDistSq(Point2D pt)`
- `double ptSegDist(double PX, double PY)`
- `static double ptSegDist(double X1, double Y1, double X2, double Y2, double PX, double PY)`
- `double ptSegDist(Point2D pt)`
- `double ptSegDistSq(double PX, double PY)`
- `static double ptSegDistSq(double X1, double Y1, double X2, double Y2, double PX, double PY)`
- `double ptSegDistSq(Point2D pt)`

Die `relativeCCW(…)`-Methoden von Line2D können herausfinden, ob der Punkt rechts oder links einer Linie liegt. Ob sich zwei Linien schneiden, ermitteln zwei überladene Line2D-Methoden `intersectsLine(…)`. Neben der Objektmethode testet die mit acht Parametern gesegnete statische Methode `linesIntersect(…)`, ob zwei Liniensegmente sich schneiden. Zwei allgemeine `intersects(…)`-Methoden deklariert die Schnittstelle Shape, doch bei diesen Methoden aus Line2D geht es darum, ob eine Form ein Rechteck schneidet. `intersectsLine(…)` bietet auch Rectangle2D und meldet damit, ob ein Rechteck eine Linie schneidet.

Genau das Gegenteil vom Schnitt ist die Vereinigung. So legt die Methode `union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)` von Rectangle2D zwei Rechtecke zusammen, wobei ein neues Rechteck entsteht, das die äußersten Koordinaten der beiden Ursprungsrechtecke besitzt. Die Methode `outcode(double, double)` ist ebenfalls interessant, da sie über eine Bit-Maske in der Rückgabe angibt, wo ein außerhalb des Rechtecks befindlicher Punkt steht, also etwa OUT\_BOTTOM, OUT\_LEFT, OUT\_RIGHT, OUT\_TOP.

---

\[\[1\]\]() Ob ein Punkt im Polygon ist, entscheidet der Gerade/Ungerade-Test ([http://en.wikipedia.org/wiki/Point\\\_in\\\_polygon](http://en.wikipedia.org/wiki/Point%5C_in%5C_polygon)).

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Most Popular Code Libraries Java Developers Use Today](https://tutego.de/blog/javainsel/2013/11/most-popular-code-libraries-java-developers-use-today.md)
- Next: [toString(), toGenericString(), getCanonicalName() in Class](https://tutego.de/blog/javainsel/2013/11/tostring-togenericstring-in-class.md)
