Involucro convesso di punti
Per i punti (0, 0), (4, 0), (4, 3), (0, 3) e (2, 1), l'involucro convesso è il rettangolo dei primi quattro, e (2, 1) resta all'interno. È il contorno che formerebbe un elastico teso attorno ai suoi punti. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
L'involucro convesso è il più piccolo poligono convesso che contiene tutti i punti di un insieme finito — il contorno di un elastico teso attorno a chiodi su una tavola. Topografi, analisti GIS, sviluppatori di giochi e studenti di geometria computazionale hanno bisogno di quel contorno a partire da campioni non ordinati: tracce GPS, impronte di edifici, vertici di sprite o nubi di classe di coppie (x, y). Questo strumento di involucro convesso di punti esegue la scansione a catena monotona di Andrew: ordina i punti per coordinata orizzontale e poi verticale, costruisce le catene inferiore e superiore in passate lineari e restituisce i vertici estremi in senso antiorario. I punti interni e i campioni collineari a metà spigolo vengono eliminati automaticamente. Lei può inviare coppie planari x/y oppure punti geografici lat/lon; la modalità geo esegue comunque un involucro planare nel piano longitudine–latitudine, l'approssimazione locale usuale per inviluppi a scala cittadina o di sito.
Che cos'è un involucro convesso e come funziona la catena monotona
Dato un insieme finito di punti nel piano, l'involucro convesso è l'unico insieme convesso minimo che li contiene tutti. Il suo bordo è un poligono convesso i cui vertici sono un sottoinsieme dell'ingresso: ogni punto estremo che «sporge» compare sull'involucro, e ogni punto scrivibile come combinazione convessa di altri giace strettamente all'interno o su uno spigolo. La catena monotona di Andrew (detta anche scansione a catena monotona) calcola quel bordo in tempo O(n log n) dominato dall'ordinamento.
Dopo l'ordinamento per x crescente (e per y in caso di parità su x), l'algoritmo cammina da sinistra a destra per l'involucro inferiore, mantenendo sempre una svolta stretta a sinistra sugli ultimi tre vertici dello stack; poi cammina da destra a sinistra per l'involucro superiore con lo stesso test di svolta. Concatenare le due catene senza duplicare gli estremi condivisi più a sinistra e più a destra produce l'involucro completo in senso antiorario, a partire dall'estremo più a sinistra (poi il più basso).
Un test di svolta non stretto (prodotto vettoriale minore o uguale a zero) rimuove i punti collineari intermedi così ogni spigolo è massimale. Gli insiemi degeneri sono gestiti con chiarezza: un solo punto unico restituisce un involucro a un vertice; due punti distinti, un segmento a due vertici; tre o più collineari, solo i due estremi. Questo comportamento corrisponde alle definizioni di aula dell'involucro dei punti estremi e evita «incavi» di area nulla negli strumenti poligonali a valle causati da campioni a metà spigolo.
Dove un contorno convesso torna utile
I team di mappatura e logistica calcolano l'inviluppo convesso di fermate di consegna, ping di asset o segnali di rilievo per tracciare un contorno esterno semplice senza digitalizzazione manuale. Le pipeline di giochi e CAD riducono i proxy di collisione o le caselle di selezione UI all'involucro dei vertici di mesh o sprite così i test di sovrapposizione restano economici.
I notebook di data science usano l'involucro come contorno esterno robusto per grafici a dispersione e revisione delle anomalie quando un bounding box è troppo largo e una forma alfa concava è troppo pesante. Le piattaforme scolastiche e di gara necessitano di un oracolo deterministico per esercizi «elencare i punti estremi in ordine»; una capacità parse pura restituisce coordinate stabili a precisione fissa così i correttori non falliscono per rumore floating. La convalida fallita non consuma saldo.
Mantenga le nubi sotto il tetto di diecimila punti, fissi i vertici dell'involucro nei test e ottiene inviluppi riproducibili per ETL GIS, worker di edge e compiti senza erigere una libreria di geometria completa propria.
Casi d'uso
Inviluppo GIS di campioni GPS
Invii ping lat/lon non ordinati da un rilievo di campo o dalla traccia di un veicolo e ottenga il contorno convesso antiorario per sovrapposizioni mappa e semplici schizzi di area di servizio.
Proxy di collisione per giochi e CAD
Riduca una nuvola di vertici di mesh o sprite a un involucro convesso stretto per collisione broad-phase e limiti di selezione senza spedire una libreria completa di geometria computazionale.
Verifiche di geometria computazionale in aula
Consenta agli studenti di inviare insiemi di punti e verificare i vertici estremi ordinati rispetto alla teoria della catena monotona, inclusi i casi collineari e i duplicati.
Domande frequenti
Come si calcola l'involucro convesso di un insieme di punti?
Invii points come array di record {x,y} o {lat,lon} (almeno uno).
La modalità geografica usa un involucro geodetico sferico?
No. La modalità geo convalida gli intervalli lat/lon ed esegue una catena monotona planare nel piano longitudine–latitudine. Quell'approssimazione locale è standard per inviluppi a scala cittadina e di sito; involucri geodetici globali sono fuori ambito.
I punti collineari restano sull'involucro?
I punti collineari intermedi su uno spigolo vengono rimossi. Restano solo gli estremi di ogni spigolo dell'involucro, così il poligono è strettamente convesso (niente svolte di 180°).
Qual è il numero minimo di punti?
Almeno uno. Un solo punto unico restituisce un involucro a un vertice; due punti, un segmento; tre o più non collineari, un involucro poligonale.
In che ordine vengono restituiti i vertici dell'involucro?
In senso antiorario, partendo dal punto più a sinistra o, se più punti condividono quel bordo, dal più basso tra loro. L'anello resta aperto: il primo vertice non viene ripetuto alla fine.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 4,
"y": 3
},
{
"x": 0,
"y": 3
},
{
"x": 2,
"y": 1
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.polygon_convex_hull",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Che cos'è un involucro convesso e come funziona la catena monotona
Le coordinate esattamente duplicate vengono collassate prima delle scansioni affinché un angolo ripetuto non gonfi hull_count.
Contratto di ingresso, modalità coordinate e campi di risposta
Ogni record può essere {x, y} per lavoro planare, {lat, lon} per campioni geografici, oppure un array di due numeri. In modalità auto le chiavi lat/lon selezionano l'etichettatura geografica; x/y quella planare. La modalità geo convalida la latitudine in [−90, 90] e la longitudine in [−180, 180] e esegue comunque l'involucro nel piano lon–lat (x = longitude, y = latitude). La precision opzionale (0–15, predefinito 10) fissa le cifre decimali delle coordinate restituite. L'anello dell'involucro è aperto: il primo vertice non è ripetuto alla fine. Invii un corpo JSON con points obbligatorio: un array di almeno un record di coordinate. Gli alias vertices, coordinates e coords sono accettati per l'array. Il coord_mode opzionale è auto (predefinito), planar o geo. In caso di successo il corpo include hull (vertici estremi ordinati), hull_count, point_count (lunghezza in ingresso), unique_count (dopo rimozione dei duplicati esatti), interior_count (unici non sull'involucro), method uguale a monotone_chain, coord_mode risolto in planar o geo, e orientation uguale a ccw. Points mancanti, array vuoto, numeri non finiti, latitudini o longitudini fuori intervallo in modalità geo, o più di diecimila punti falliscono con invalid_input e non vengono fatturati. Abbini questo endpoint a calcolatori di area o perimetro solo dopo aver un anello ordinato; l'uscita dell'involucro è già ordinata e pronta per quegli strumenti quando serve le metriche dell'inviluppo di una nuvola di punti piuttosto che di un poligono digitalizzato a mano.
Dove un'API di involucro convesso merita il proprio costo
Poiché l'implementazione è parse pura di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita.
Domande tecniche
Quanto costa il calcolatore di involucro convesso di punti?
Lo strumento del browser è gratuito. Le richieste API usano saldo KIT prepagato a $0.002 per chiamata riuscita; l'ingresso non valido non viene fatturato.