magari, purtroppo però non posso aiutarvi, non sono pratico ne di programmazione ne di GH
Era solo per informarti.
Bello !
Non sembra troppo complicato, almeno da quanto ci capisco.
Forse si potrebbe provare a riscriverlo per Rhino/RhinoCommon.
Se vuoi condividere/commentare il codice?
Io ho inserito nel plugin le classi, appena posso vedo come richiamarle.
Che ne pensate se lo creiamo insieme e pubblichiamo gratuitamente il plugin firmato Mcneel Italia ?
Fico!
Ma, l’idea di base sarebbe… che sia più performante/efficiente di quello attuale integrato…?
Era solo un’idea per una specie di esercitazione, non ho scritto niente … e comunque sarebbe incomprensibile.
Stai facendo un add-on per GH ?
Aspetta: c’è già quello integrato?
Abbiamo scherzato.
Intendo questi:
Metodi rhinocommon per il voronoi non so se esistono, nemmeno ho cercato.
Però l’idea è comunque carina, sarebbe “didattico” farci le nostre classi e metodi per 1 fare la triangolazione delaunay, e 2 fare il voronoi.
Usare librerie già fatte… boh, penso sarebbe più interessante rifarle da zero.
Usiamo elementi base delle librerie McNeel come il Punto3d e qualche .Distance o simili … ma già che ci siamo potremmo rifare tutto!
Hehe … pero’ per fare qualcosa utilizzabile da Rhino/GH prima o poi bisogna usare le loro classi, no ?
Una classe “Punto2D” contenente .X e .Y sarebbe semplice.
La mesh(rhino) finale è solo convertire la lista dei nostri Punto2D in vertici, e la topologia creata con il nostro delaunay deve essere una semplice lista ti coppie di numeri interi, gli indici dei vertici che definiscono gli spigoli… con una mini-logica half-edge ricostruire la mesh è un metodo di una decina di righe.
È fare il delaunay il problema… non sembra semplice, e ottimizzare per le prestazioni ancora peggio.
Certo, anche se, volendo, c’e’ anche in RhinoCommon:
Point2d Structure (rhino3d.com)
Ma capisco che sia un buon esercizio di programmazione.
Mah, ho dato un’occhiata al progetto linkato da Luca, a me sembra pulito, ben fatto, e volendo una buona traccia da seguire.
Se si vuole ottimizzare forse si puo’ puntare su quanto diceva Sergio:
Anche qui se si vuole, ci sono classi in RhinoCommon:
Oppure farsi qualcosa da zero. Forse basta una semplice griglia, senza bisogno di usare strutture ricorsive.
Va bene, ho straparlato abbastanza … vedete vuoi cosa preferite costruire.
Siete più folli di me…
Non se ne parla proprio a migliorare l algoritmo che ritengo uno Step avanzato.
Poi se volete, fate pure, ma mezzo neurone non lo metto
Per me è tanto se capisco come si implementano classi e metodi, mai fatto pratica, solo letto un po’.
- Innanzitutto occorre togliere credo il file
MainWindows.Xaml.Cs
perché del form non ce ne famo nulla.
-
Poi in input i punti li diamo noi da gh col componente Population
-
Dai punti creiamo la triangolazione:
var points = delaunay.GeneratePoints(PointCount, DiagramWidth, DiagramHeight);
var triangulation = delaunay.BowyerWatson(points);
-
Sostituiamo il metodo DrawTriangulation perché sia GH a disegnare le linee (come? Booo, da capire)
-
I bordi della Triangolazione di Delaunay si ricavano da
var vornoiEdges = voronoi.GenerateEdgesFromDelaunay(triangulation);
- Dovremmo sostituire
DrawVoronoi(vornoiEdges);
con un codice di libreria GH;
-
Sostituiamo il metodo
DrawPoints(points);
Ho finito di lavorare da poco, riposo il neurone e poi vedo un po’.
Sarebbe bello fare un meeting online, tempo fa lo proposi ma adesioni zero.
No, ok, hai ragione…
Però tra quello che dici te (usare un codice esistente) e fare da zero l’algoritmo (anche inefficiente/lento) … mi sembra più divertente la seconda strada.
Cmq stasera provo anche io i 7 punti che hai detto…
Cio’ che vuoi disegnare lo puoi mandare in output dal componente, se sono oggetti RhinoCommon.
Giusto, ma se serve un ciclo…?
Se parli di ciclo per costruire gli oggetti, li salvi in una array o in una lista, o anche direttamente in un albero GH, ma questi non li conosco …
Tutto bellissimo tranne la firma. In questo ambito il marchio e nome sono registrati I vostri nomi dovrebbero essere in vista per una giusta pubblicità. Deve andare a voi non a McNeel.
@RiccardoMajewski… ci devi dire qualcosa?
…ehm…si!(?)
Sarò sincero, non ricordo cosa ci eravamo detti… ho una memoria pessima.
In peggioramento.
Ho preparato un giochino con c#. Mi sono reso conto solo dopo che forse è diventato un po’ troppo complesso per un uso “didattico”.
Comunque, eccolo qua:
GoL V1.00.gh (24,0 KB)
(perdonate il tono flemmatico, una di notte, vorrei 8 ore al giorno in più…)
Se volete faccio un altro video dove vado più in dettaglio con la descrizione del codice vero e proprio…