Hehe … No, abitudine mia.
Col VBScript non e’ necessario dichiararle.
Lo e’ solo se usi Option Explicit … mai usato.
Come linguaggio lo trovavo gia’ abbastanza scomodo cosi’.
Intanto non li chiamerei nodi, sono Edit Points o se vuoi Greville Points.
I nodi sono dei semplici numeri, questi sono punti.
Se le curve sono diverse ci saranno differenze di grado o di nodi tra le due curve.
Hai controllato ?
mmmm ni (scusa se in questo caso non sono del tutto daccordo)
come vedi dalla foto esempio sopra sono selezionati il componente Py con l’istruzione che hai postato,
ed il componente “Curve Edit Points” con K = False che riportano gli stessi punti (selezionati n verde)
che equivalgono agli stessi punti della curva cliccando in Rh sul comando visualizza punti di modifica
mentre nell’esempio di sotto, c’é solo il componente “Curve Edit Points” con K = True
che riporta i tre punti centrali non selezionati, che equiovalgono allo osnap “Nodo” in Rh
quindi nel primo caso come dici “Edit Points o se vuoi Greville Points” va bene
nel secondo caso invece sono proprio i punti nodi come denominati dagli osnap
la prova fatta è creare una curva col comando crvinter in Rh, collegare il componente “Curve Edit Points” (che tenendo presente ciò che ho detto sopra) in quel caso mi riporta i punti dei nodi della curva,
e quindi collegando il componente “Interpolate” di Gh mi ricrea la stessa curva di partenza
mentre nel secondo caso la curva è stata creata sempre in Rh usando curva tramite punti di controllo,
ma questa volta andando a recuperare i nodi della curva sempre col componente “Curve Edit Points” per collegarli a “Interpolate” sempre in Gh la curva generata è totalmente differente da quella iniziale.
ovviamente le curve fatte in Rh sia quella interpolata che coi punti di controllo sono entrambe di grado 3
Non posso esserti di grande aiuto. Comunque, osservando l’immagine (escludendo
la parte destra! ) la curva ha gli edit point che non sono sovrapposti ai punti di
knot. Ciò indica che il vettore dei knot non è uniforme. Prova a verificare le opzioni del
componente che genera la curva interpolata. Giusto un appunto.
Quando si costruisce una curva tramite il comando _curve il vettore dei knot associato è
uniforme. Quando si costruisce una curva tramite il comando _interpCrv il vettore dei
knot associato lo imposta l’utente con l’apposita opzione di comando. Fin qui tutto banale …
ma non scontato (!) perché se ad esempio si costruisce una curva interpolata di grado tre
costruita su 3 punti, il risultato è una curva di grado 3 composta da due bezier. Secondo
logica uno si attenderebbe una curva di grado 2 …
Te lo evidenzio perché certe forzature interne di rhino (poche) possono spiazzarti e far
dubitare della correttezza del tuo codice.
ciao Sergio, doppiamente grazie per il contributo essendo che hai aperto una domanda che volevo fare:
“differenze nell’impostare i Nodi come: Uniforme - Corda - RadiceQuadrata”
(premetto che sia in Rh che Gh quando realizzo una curva come nelle prove fatte lascio le opzioni base)
ho costatato ciò che dici e in effetti se imposto i nodi in modo uniforme i punti che creo la curva, combaciano con i Punti di Modifica/Greville Points e fin qui tutto bene però cambiano le forme:
destra le 2 curve sovrapposte (2+2) come si vede sono perfettamente identiche sia uniforme che corda
a sinistra invece ci sono sempre 2 curve sovrapposte con i nodi uniforme che corda ma anche avendo usato gli stessi punti dove doveva passare la curva e ovviamente lo stesso grado le curve sono diverse,
come si può notare a destra i punti sono posizionati in modo identico a sinistra invece non omogeneo.
quindi la domanda nasce spontanea: come hai detto la curva per punti di controllo crea i knot “uniformi”,
come mai invece l’impostazione base della curva interpolata è su “corda” (lo so sarebbe una domanda da fare a chi l’ha programmato anche per questo non avevo mai aperto quest’argomento) e come ci si dovrebbe regolare nel sapere quando usare per l’appunto opzione: Uniforme - Corda - RadiceQuadrata?
(mica la conclusione sarebbe che l’opzione uniforme bisogna usarla quando i punti sono specchiati?)
Hai ragione, Salvio.
Avevo detto una cavolata io …
A quanto pare, non sono sufficienti grado, nodi e Greville points per individuare la curva.
Sembra ci possano essere curve diverse definite da questi stessi dati.
Si vede che i CV sono diversi …
Nessuna anomalia / bugs. Se i punti di input della curva interpolante sono equidistanti
il vettore dei knot con opzione chord coincide con il vettore dei knot uniforme.
Qui una def che estrae il vettore dei nodi e lo normalizza per poter confrontare facilmente le 2 curve.
I nodi normalizzati sono negli ultimi Panel a destra.
Come possiamo vedere, i nodi sono diversi per la 2 curve.
La differenza e’ tutta in quei ‘Nodo: Corda’ e ‘Nodo: Uniforme’.
E’ normale che le curve siano diverse.
Le curve a destra nel tuo file invece hanno CV simmetrici, per cui anche settando ‘Nodo: Corda’,
il vettore dei nodi risulta uniforme, quindi e’ uguale all’altro caso.
grazie Sergio e Emilio per la spiegazione e la def postata
una cosa manca, per quali circostanze ci sono queste differenze nelle opzioni dei nodi
non credo che l’abbiano fatto soltanto per una questione che era fattibile matematicamente
nel giocare a cambiare vettori dei knot facendoli divenire uniformi o no. per me serve per casi pratici.