Ordinare lista punti

ho alcuni punti realizzati con delle intersezioni, ora questi punti servono per realizzare una IntCrv
che deve formare un cerchio, mentre i punti sono ordinati a zigzag. c’è una soluzione di ordine?

Immagine pliiiiss?

Provo senza immagine.
img
sort.gh (12,6 KB)

C’è un componente che si chiama SortAlongCurve, a memoria dovrebbe essere nel menu Vector, nel reparto Punti.
Ordina i punti seguendo una curva, se li hai bisogno in forma circolare, un componente Circle dovrebbe risolvere il problema.

grazie a tutti per le risposte

per Luca:

Leopoldo complimenti per la definizione, non credevo tutto questo per avere questo risultato.
nel tuo esempio il risultato è quello, adesso cerco di capire come funzione e provo per il mio caso :+1:

taldi72, do un’occhiata anche a questo metodo, cosi vedo se fa nel mio caso :ok_hand:

meno componenti, niente script:

Poi se c’è qualcosa di pronto ben venga.

salvio.gh (14,7 KB)

ps ma la soluzione di Taldi penso sia la migliore. Non ho provato.

ps2 Leo, se il centro della regione è fuori dal gruppo di punti non funziona più, occore calcolare il centro di massa.

La tua situazione attuale rispecchia l’ordinamento standard di GH, in ordine di X, poi in ordine di Y ed eventualmente in ordine di Z, come aveva spiegato @giuseppe in un altro post.
Se quello che ti serve è quanto raffigurato nella tua immagine, ti potrebbero servire solo 2 componenti, Circle Fit e SortPointsAlongCurve.

3 Mi Piace

però che succede se due punti sono sullo stesso raggio?

comunque vince Taldi, ho provato, stessa curva, soli 3 componenti.
Allego.
salvio.gh (17,4 KB)

Luca non sapevo che fosse una sfida :smile: :smile:

si comunque quello di Taldi è sicuramente più pratico

POINT1

in effetti con tre componenti si riesce a portare il risultato a casa

usando CircleFit come suggerito vanno bene 2, anche se con la soluzione postata in foto filtro il punto sul quale creare il cerchio e questo mi torna utile essendo che poi sarà il punto inizio/fine del cerchio.

grazie Taldi ottima soluzione pratica :+1:
con calma mi vedrò anche le soluzioni di Leopoldo e Luca
giusto per capire il ragionamento e come metterlo in pratica :+1:

Ma figurati… un gioco più che altro :stuck_out_tongue_winking_eye:

1 Mi Piace

E si impara sempre qualcosa di nuovo.

2 Mi Piace

è io dico “per fortuna” :smiley:

mi collego a quanto detto sopra: giocando si impara :wink:

Luca, spiegato semplicemente, il componente “Average” come funziona?
ti è servito per trovare il centro dei punti indicati?

Si Salvio, average significa media. In pratica, una popolazione di punti possiede un punto detto centro di massa (CM) rappresentante la posizione media degli stessi.
Se lanci una pallina che ha un suo centro seguirà una traiettoria parabolica. Adesso immagina di farla esplodere in tanti pezzi durante il percorso: anche se tutti i pezzi si allontanano dal centro della pallina, il CM della stessa continuerà a fare il suo percorso parabolico. Cioè mediamente la pallina continua ad avere traiettoria parabolica.
Con quei componenti ho trovato la media delle coordinate lungo i tre assi e quindi in CM.

Ps possibile che con esista un componente per il CM di punti?

ok grazie Luca per la spiegazione :wink: ottimo escamotage per trovare il centro di punti :+1:
(in mancanza di un componente specifico)

quello che non comprendo sono i componenti vector2pt e angle:
una volta trovato i vettori e calcolato gli angoli e alla fine riordini i punti iniziali in base all’angolazione
com’ è che questa procedura riesce a indicare a Gh il senso rotatorio da seguire alla curva?

In pratica devi spazzare un raggio vettore dopo l’altro in senso orario ad esempio a partire da un semiasse positivo, X ad esempio.
Ad ogni raggio vettore è associato un punto e un angolo quindi se li ordini in senso orario ordini i punti. Il comando sort fa un ordinamento degli angoli, tanti quanti sono i punti e associa la stessa trasformazione alla lista di punti.

mmmm :thinking:

nella teoria che fa un senso orario ci siamo
ma quello che non mi torna, visualizzando l’ordine degli angoli sono dal più piccolo al più grande
com’ è che l’ordine di grandezza fa sì che la curva vada in senso orario?

Dal più piccolo al più grande non è in ordine crescente di angolo? Orario o antiorario poco cambia, i punti saranno presi in successione.

la lista a Sx sono mischiate, mentre quelle a Dx sono ordinate dal più piccolo al più grande.
quindi presumo che Sort ordina i punti del ValoreA in base all’ordine crescente dell’input Keys?

Si corretto