Konvexe Hülle von Punkten
Für die Punkte (0, 0), (4, 0), (4, 3), (0, 3) und (2, 1) ist die konvexe Hülle das Rechteck der ersten vier, und (2, 1) bleibt innen. Es ist der Umriss, den ein um Ihre Punkte gespanntes Gummiband bilden würde. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Die konvexe Hülle ist das kleinste konvexe Polygon, das alle Punkte einer endlichen Menge enthält — der Umriss eines Gummibands, das um Nägel auf einem Brett gespannt wird. Vermesser, GIS-Analysten, Spieleentwickler und Studierende der algorithmischen Geometrie brauchen diesen Umriss aus ungeordneten Proben: GPS-Spuren, Gebäudegrundrisse, Sprite-Vertices oder Unterrichtswolken von (x, y)-Paaren. Dieses Werkzeug für die konvexe Hülle von Punkten führt den monotonen Ketten-Scan von Andrew aus: Es sortiert die Punkte nach horizontaler und dann vertikaler Koordinate, baut die untere und obere Kette in linearen Durchläufen und liefert die Extremvertices gegen den Uhrzeigersinn. Innenpunkte und kollineare Mittelkanten-Proben fallen automatisch weg. Sie können planare x/y-Paare oder geografische Lat/Lon-Punkte senden; der Geo-Modus berechnet weiterhin eine planare Hülle in der Längengrad–Breitengrad-Ebene, der üblichen lokalen Näherung für Hüllen im Stadt- und Standortmaßstab.
Was eine konvexe Hülle ist und wie die monotone Kette arbeitet
Gegeben eine endliche Punktmenge in der Ebene ist die konvexe Hülle die eindeutige kleinste konvexe Menge, die sie alle enthält. Ihr Rand ist ein konvexes Polygon, dessen Vertices eine Teilmenge der Eingabe sind: Jeder extreme Punkt, der «herausragt», erscheint auf der Hülle, und jeder Punkt, der als konvexe Kombination anderer schreibbar ist, liegt strikt innen oder auf einer Kante. Andrews monotone Kette (auch monotonen Ketten-Scan genannt) berechnet diesen Rand in O(n log n) Zeit, dominiert durch das Sortieren.
Nach dem Sortieren nach steigendem x (und nach y bei x-Gleichstand) läuft der Algorithmus von links nach rechts für die untere Hülle und hält stets eine strikte Linksdrehung an den letzten drei Stack-Vertices; dann läuft er von rechts nach links für die obere Hülle mit demselben Drehtest. Das Zusammenfügen beider Ketten ohne Duplizieren der gemeinsamen linkesten und rechtesten Endpunkte ergibt die volle Hülle gegen den Uhrzeigersinn, beginnend am linkesten (dann untersten) Extrem. Ein nicht-strikter Drehtest (Kreuzprodukt kleiner oder gleich null) entfernt kollineare Zwischenpunkte, sodass jede Kante maximal ist.
Entartete Mengen werden sauber behandelt: ein einziger eindeutiger Punkt liefert eine Ein-Vertex-Hülle; zwei verschiedene Punkte ein Zwei-Vertex-Segment; drei oder mehr kollineare nur die beiden Extreme. Dieses Verhalten entspricht den Lehrbuchdefinitionen der Extrempunkt-Hülle und hält nachgelagerte Polygonwerkzeuge frei von Nullflächen-«Dellen» durch Mittelkanten-Proben.
Eingabevertrag, Koordinatenmodi und Antwortfelder
Jeder Satz darf {x, y} für planare Arbeit, {lat, lon} für geografische Proben oder ein Zwei-Zahlen-Array sein. Im Auto-Modus wählen Lat/Lon-Schlüssel die geografische Etikettierung; x/y die planare. Der Geo-Modus prüft Breite in [−90, 90] und Länge in [−180, 180] und führt die Hülle weiterhin in der Lon–Lat-Ebene aus (x = longitude, y = latitude).
Optionale precision (0–15, Standard 10) setzt die Dezimalstellen der zurückgegebenen Koordinaten. Der Hüllenring ist offen: der erste Vertex wird am Ende nicht wiederholt. Kombinieren Sie diesen Endpunkt mit Flächen- oder Umfangsrechnern erst, wenn Sie einen geordneten Ring haben; die Hüllenausgabe ist bereits geordnet und bereit für diese Werkzeuge, wenn Sie die Hüllmetriken einer Punktwolke statt eines handdigitalisierten Polygons brauchen.
Wo ein konvexer Umriss hilft
Karten- und Logistikteams berechnen die konvexe Hülle von Lieferstopps, Asset-Pings oder Vermessungsmarken, um einen einfachen Außenrand ohne manuelles Digitalisieren zu zeichnen. Spiele- und CAD-Pipelines verkleinern Kollisionsproxys oder UI-Auswahlboxen auf die Hülle von Mesh- oder Sprite-Vertices, damit Überlappungstests günstig bleiben. Data-Science-Notebooks nutzen die Hülle als robusten Außenkontur für Streudiagramme und Anomalieprüfung, wenn eine Bounding Box zu lose und eine konkave Alpha-Form zu schwer ist.
Unterrichts- und Wettbewerbsplattformen brauchen ein deterministisches Orakel für Übungen «listen Sie die Extremepunkte der Reihe nach»; eine reine Parse-Fähigkeit liefert byte-stabile Koordinaten bei fester Genauigkeit, damit Bewerter nicht an Gleitkommarauschen scheitern. Fehlgeschlagene Validierung wird nicht abgerechnet. Halten Sie Wolken unter der Zehntausend-Punkte-Grenze, pinnen Sie Hüllenvertices in Tests, und Sie erhalten reproduzierbare Hüllen für GIS-ETL, Edge-Worker und Hausaufgaben, ohne eine eigene vollständige Geometriebibliothek aufzustellen.
Anwendungsfälle
GIS-Hülle von GPS-Proben
Senden Sie ungeordnete Lat/Lon-Pings aus einer Feldvermessung oder Fahrzeugspur und erhalten Sie den gegen den Uhrzeigersinn laufenden konvexen Umriss für Kartenoverlays und einfache Servicegebietsskizzen.
Kollisionsproxys für Spiele und CAD
Reduzieren Sie eine Wolke von Mesh- oder Sprite-Vertices auf eine strikt konvexe Hülle für schnelle Broad-Phase-Kollision und Auswahlgrenzen, ohne eine volle CG-Bibliothek mitzuliefern.
Unterrichtsprüfungen der algorithmischen Geometrie
Lassen Sie Studierende Punktmengen einreichen und geordnete Extremvertices gegen die Theorie der monotonen Kette prüfen, einschließlich kollinearer und doppelter Randfälle.
Häufige Fragen
Wie berechne ich die konvexe Hülle einer Punktmenge?
Senden Sie points als Array von {x,y}- oder {lat,lon}-Datensätzen (mindestens einer).
Nutzt der geografische Modus eine sphärische geodätische Hülle?
Nein. Der Geo-Modus prüft Lat/Lon-Bereiche und führt eine planare monotone Kette in der Längengrad–Breitengrad-Ebene aus. Diese lokale Näherung ist Standard für Hüllen im Stadt- und Standortmaßstab; globale geodätische Hüllen liegen außerhalb des Umfangs.
Bleiben kollineare Punkte auf der Hülle?
Kollineare Zwischenpunkte auf einer Kante werden entfernt. Nur die Extrem-Endpunkte jeder Hüllenkante bleiben, sodass das Polygon strikt konvex ist (keine 180°-Drehungen).
Wie viele Punkte sind mindestens nötig?
Mindestens einer. Ein eindeutiger Punkt liefert eine Ein-Vertex-Hülle; zwei Punkte ein Segment; drei oder mehr nicht kollineare eine polygonale Hülle.
In welcher Reihenfolge werden die Eckpunkte der Hülle ausgegeben?
Gegen den Uhrzeigersinn, beginnend beim Punkt ganz links oder, wenn sich mehrere diesen Rand teilen, beim untersten davon. Der Ring bleibt offen: Der erste Eckpunkt wird am Ende nicht wiederholt, das ist für Ihre weitere Verarbeitung wichtig.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/geo/polygon-convex-hull \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3},{"x":2,"y":1}]}'const res = await fetch("https://api.kit.forhosting.com/geo/polygon-convex-hull", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
},
{
"x": 2,
"y": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/polygon-convex-hull",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
},
{
"x": 2,
"y": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/polygon-convex-hull", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3},{"x":2,"y":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3},{"x":2,"y":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/polygon-convex-hull", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
},
{
"x": 2,
"y": 1
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.polygon_convex_hull",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Was eine konvexe Hülle ist und wie die monotone Kette arbeitet
Exakt doppelte Koordinaten werden vor den Scans zusammengezogen, damit eine wiederholte Ecke hull_count nie aufbläht.
Eingabevertrag, Koordinatenmodi und Antwortfelder
Senden Sie einen JSON-Body mit Pflichtfeld points: ein Array aus mindestens einem Koordinatensatz. Alias vertices, coordinates und coords werden für das Array akzeptiert. Optionales coord_mode ist auto (Standard), planar oder geo. Bei Erfolg enthält der Body hull (geordnete Extremvertices), hull_count, point_count (Eingabelänge), unique_count (nach Entfernen exakter Duplikate), interior_count (eindeutige Punkte nicht auf der Hülle), method gleich monotone_chain, coord_mode aufgelöst zu planar oder geo, und orientation gleich ccw. Fehlende points, leeres Array, nicht endliche Zahlen, außerhalb der Bereiche liegende Breiten oder Längen im Geo-Modus oder mehr als zehntausend Punkte scheitern mit invalid_input und werden nicht abgerechnet.
Wo eine API für die konvexe Hülle ihren Preis wert ist
Weil die Implementierung reine Parse-Stufe A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz.
Technische Fragen
Was kostet der Rechner für die konvexe Hülle von Punkten?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen vorausbezahltes KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht abgerechnet.