Polygon-Innenwinkel aus Koordinaten berechnen
Dieser Rechner übernimmt die geordneten kartesischen Koordinaten eines einfachen Polygons und ermittelt den Innenwinkel an jedem Eckpunkt.
Im Browser ausführen – kostenlos
Er verarbeitet konvexe und konkave Polygone, sodass eine einspringende Ecke korrekt einen überstumpfen Winkel von mehr als 180 Grad ergeben kann. Die Antwort behält die Reihenfolge der Eckpunkte bei, gibt alle Messwerte in Grad aus, nennt den Umlaufsinn und enthält die theoretische Winkelsumme. Damit können Sie Geometrien prüfen, Koordinatendaten validieren und reproduzierbare automatisierte Abläufe erstellen.
Geben Sie einen geordneten Polygonrand ein
Übermitteln Sie mindestens drei Eckpunkte als Objekte mit endlichen numerischen x- und y-Koordinaten. Die Reihenfolge muss dem Polygonrand lückenlos im Uhrzeigersinn oder gegen den Uhrzeigersinn folgen. Wiederholen Sie den ersten Punkt nicht am Ende, denn der Rechner schließt die letzte Kante automatisch. Die Koordinaten beschreiben eine kartesische Ebene und können Zeichnungseinheiten, Meter in einem projizierten System, Pixel oder einen anderen einheitlichen linearen Maßstab darstellen. Sie werden nicht als Längen- und Breitengrade auf einer gekrümmten Erde interpretiert. Eine gültige Eingabe muss ein einfaches Polygon bilden: Benachbarte Eckpunkte dürfen nicht gleich sein, kein Punkt darf doppelt vorkommen, die eingeschlossene Fläche muss ungleich null sein und nicht benachbarte Kanten dürfen einander weder schneiden noch berühren. Diese Bedingungen verhindern mehrdeutige Innenwinkel bei einem in sich gefalteten Rand. Schlägt die Validierung fehl, benennt die Antwort das betreffende Eckpunkt- oder Kantenproblem, anstatt glaubwürdig wirkende Werte für eine ungültige Geometrie zu liefern.
Deuten Sie konvexe, konkave und überstumpfe Winkel
Für jeden Eckpunkt bildet der Rechner Vektoren vom aktuellen Punkt zu dessen vorherigem und nächstem Nachbarn. Skalarprodukt und Kreuzprodukt bestimmen den lokalen Winkel und die Drehrichtung. Die vorzeichenbehaftete Polygonfläche zeigt, ob der gesamte Rand im Uhrzeigersinn oder dagegen durchlaufen wird. Aus der Kombination von lokaler Drehung und Umlaufsinn lässt sich eine gewöhnliche konvexe Ecke von einer konkaven Ecke unterscheiden, deren Innenraum dem überstumpfen Ergänzungswinkel entspricht. Daher liefert ein konvexes Rechteck vier Werte von 90 Grad, während eine Einbuchtung mehr als 180 Grad ergeben kann. Das Array angles_deg folgt exakt der Reihenfolge der eingegebenen Eckpunkte; Index null gehört stets zum ersten übermittelten Punkt. Die Ergebnisse werden auf zehn Dezimalstellen gerundet, damit störende Gleitkommareste entfallen, ohne nützliche Genauigkeit zu verlieren. Kollineare Randpunkte können 180 Grad ergeben, sofern keine unzulässige Überlappung entsteht. Das Feld winding beschreibt ausschließlich die Laufrichtung.
Prüfen Sie die Summe und verwenden Sie die Ausgabe sicher
Jedes einfache Polygon mit n Eckpunkten besitzt die Innenwinkelsumme (n − 2) × 180 Grad, unabhängig davon, ob es konvex oder konkav ist. Das Feld total_sum_deg gibt diese Invariante direkt aus, während vertex_count den Wert n liefert. Die Summe eignet sich als schnelle Plausibilitätsprüfung beim Import von Geometrien aus CAD-Exporten, digitalisierten Umrissen, Lernaufgaben oder Zeichenprogrammen. Einzelne gerundete Werte können geringfügig von einer separat gebildeten Gleitkommasumme abweichen. Verwenden Sie deshalb total_sum_deg als maßgebliche theoretische Summe, statt bei den angezeigten Werten bitgenaue Gleichheit zu verlangen. Die Fähigkeit arbeitet deterministisch: Dieselben geordneten Koordinaten erzeugen stets dasselbe JSON, ohne Netzwerk, Zufall oder aktuelle Uhrzeit. Sie können die Berechnung im Browser kostenlos ausführen oder die API für $0.002 je Anfrage in eine Verarbeitungskette einbinden. Halten Sie alle Koordinaten in einem ebenen Bezugssystem und projizieren Sie geografische Daten zuvor, wenn die Erdkrümmung die beabsichtigte Geometrie merklich beeinflusst.
Anwendungsfälle
Ein Zeichenwerkzeug validieren
Vergleichen Sie Eckwinkel und theoretische Summe, nachdem ein geordneter Polygonpfad bearbeitet wurde.
Konkave Geometrie untersuchen
Erkennen Sie überstumpfe Winkel an Einbuchtungen, ohne jedes Polygon als konvex oder regelmäßig vorauszusetzen.
Koordinatenaufgaben auswerten
Erzeugen Sie deterministische Winkel je Eckpunkt und die erwartete Summe für Polygone aus Koordinatenlisten.
Häufige Fragen
Funktioniert die Berechnung für konkave Polygone?
Ja. Aus Umlaufsinn und lokaler Drehung werden bei Bedarf überstumpfe Innenwinkel von mehr als 180 Grad bestimmt.
Soll ich den ersten Eckpunkt am Ende wiederholen?
Nein. Die schließende Kante ist implizit; ein wiederholter erster Eckpunkt wird als Duplikat abgelehnt.
Kann ich Breiten- und Längengrad direkt verwenden?
Nur wenn eine ebene Näherung ausreicht. Für belastbare geografische Geometrie projizieren Sie die Daten zuerst in ein geeignetes kartesisches System.
Warum wurde mein Polygon abgelehnt?
Häufige Ursachen sind weniger als drei Eckpunkte, nicht endliche Koordinaten, doppelte Punkte, Kanten ohne Länge, eine Fläche von null oder Schnitte nicht benachbarter Kanten.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Dieselbe deterministische Berechnung ist auch im Browser verfügbar.
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-interior-angles \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vertices":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}'const res = await fetch("https://api.kit.forhosting.com/geo/polygon-interior-angles", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vertices": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/polygon-interior-angles",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vertices": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/polygon-interior-angles", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vertices":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vertices":[{"x":0,"y":0},{"x":4,"y":0},{"x":4,"y":3},{"x":0,"y":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/polygon-interior-angles", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"vertices": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.polygon_interior_angles",
"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. |