Formula per CurvaNurbs

giusto per completezza:

se mi confondo darò la colpa all’ora tardi :face_with_hand_over_mouth: :face_with_hand_over_mouth:

da quello che ho capito, la prima espressione mi crea la curva (verde)
mentre la seconda mi trovo la derivata (rossa)
la terza quella (rosa) ĆØ ultima formula postata

ma si stava parlando sempre su come trovare i punti Quad di una curva di 3°
grado quindi con 4 punti di controllo, tramite uso di una formula d’espressione?

immagine

una formula che desse un risultato come questo ma su una curva di grado 3 con 4 punti di controllo.

Prima cosa: questa e’ sbagliata :blush:

Va scritta con la Y, non con la P.
Dopo vediamo perche’

OK

Hai notato che la terza genera la stessa curva della seconda, solo scalata di \frac{1}{3} ?
Questo perche’ e’ la stessa espressione senza il 3 iniziale.

Tu di solito vuoi solo le formule, ma quando il risultato prevede piu’ di una semplice formula dobbiamo organizzare un po’ la faccenda, perche’ fare il burattinaio non mi diverte … :wink: :grinning:

Prima questione:
Qui, come esempio, cerchiamo i punti Quad corrispondenti ai punti sulla curva con valori di Y minimi e massimi.
Questo e’ chiaro ?

al volo e di fretta avevo letto burattino, mi ero chiesto perchĆ© una frase simile, ritenendo che qui non c’é nessun burattino e nessun burattinaio, ma solo persone con la stessa passione a cui piace parlarne.
poi rileggendola meglio ho letto burattinaio, presumo che intendi nel guidare a comprendere lungo il tragitto, se questo il senso, credo che capire una cosa che non si conosce ĆØ impossibile, infatti ho accettato il consiglio dato, di prendere per buona e utilizzare la soluzione cosƬ com’é, e quello ho fatto tutto qua. . .

conosco i miei limiti, quello che posso fare o meno. so anche che ho la testa dura, e confido che pian piano come tante cose apprese nella programmazione, anche queste col tempo diventeranno famialiari :wink:

bando alle ciance, e torno sull’argomento:

mi sembrava che ci mancasse qualcosa, ci vorrebbe la potenza tra t^2 giusto?

non avevo collegato al 3 quindi di \frac{1}{3} scalato ma che era lo stesso risultato si questo lo avevo notato

nell’ultimo compenente ho inserito i valori Y dei 4 punti, mentre la formula dell’espressione lo lasciata intatta cosƬ com’era e mi ritorna una serie di valori numerici

Esatto sarebbe il risultato da ottenere. . .

Voglio dire che, quando la procedura da seguire ha una certa complessita’, indicare le operazioni da fare, una per volta mentre tu le esegui, ma senza riuscire a trasmettere il significato dell’intera procedura secondo me ha poco senso.

Per quello, visto che siamo passati da calcolare i punti di una curva tramite un’unica espressione a cercare minimi e massimi per curve di terzo grado, preferisco romperti le scatole e cercare di spiegare il senso delle varie operazioni che stiamo facendo.

Eseguire operazioni senza capirne la logica non mi sembra utile per imparare.
Fare la stessa cosa conoscendo lo scopo dei vari passaggi, secondo me invece serve. :slight_smile:

OK, quello e’ vero, ma io dicevo un’altra cosa:

EDIT:
No, mi hai fregato … :wink: :smile:
Hai copiato la formula formattata con LaTeX … e certo che non ci vedi il ā€œ^ā€ …
:smile:
/ EDIT

:+1:

Avendo usato le Y al posto dei punti (cioe’ i CV), invece di restituire i punti (che in realta’ sarebbero vettori) che disegnano la curva della derivata, ti da’ solo le Y di quei vettori.

Ma prima dobbiamo capire perche’ stiamo utilizzando quella formula.

Perfetto.
Adesso, come facciamo a individuare quei punti ?
Risposta: ragionando sul grafico della curva vediamo che in quei punti la tangente alla curva e’ parallela all’asse X, cioe’ la direzione della tangente ha una componente Y pari a zero.
(ragioniamo in 2 dimensioni per semplicita’, scordiamoci la Z)

Anche questo e’ chiaro ? :slight_smile:

aaaa ecco cos’era che ieri non mi quadrava, io ricordavo di averla vista bene, i caratteri erano quelli ma qualcosa non mi convinceva: infatti t{^2} ĆØ diverso da t2 senza formattazione ahahahah

lungi da me dare fregature, anzi a questo punto direi che la fregatura me la data la formattazione a me
:rofl: :rofl: :rofl:

Perfettissimo :+1:
con il ragionamento ci siamo, adesso mi manca come fare ciò usando le formule delle espressioni
e credo non solo questo, ma anche combinare il tutto con i 4 punti come nell’esempio sotto a 3 CV

ps

quindi, la tua prefazione, rispecchia ciò che io avevo inteso, che fare senza capire non si va avanti,
e anche su questo non posso che essere pienamente daccordo come appunto dicevo. . .

Emilio per me il discorso che hai fatto va benissimo, solo una cosa, voglio prima ragguagliati bene su quello che stai facendo, ovviamente lo fai a tuo rischio e pericolo, se non ci capisco nulla poi non ti arrabbiare con me ahahahah giĆ  sento le risate di Sergio e Fabio che dicono:
lo avevamo detto noi che era meglio dargli solo le formule :rofl: :rofl:

battute a parte, forza mettiamoci a lavoro e troviamo questi Quad in una curva con 4 CV di 3° grado. . .

:smile:

Hehe …
Il fatto e’ che se si tratta di una sola formula, va tutto bene. :grinning:

Ma quando la cosa si complica …
Ho anche provato a scrivere solo le formule, qui:

Ma se non sai perche’ stai scrivendo quelle cose, e’ molto facile perdere il filo …

OK

Allora come facciamo a trovare i valori dove la tangente ha componente Y = 0 ?
Serve la derivata.

Ora, senza cercare di spiegare la derivata (se ti interessa, chiamiamo Fabio :slight_smile: ), dico solo che la derivata indica la variazione di qualcosa.
Ad esempio la velocita’ e’ la derivata dello spazio percorso rispetto al tempo.
Qui la derivata della nostra Nurbs di terzo grado indica la variazione del punto (sulla curva) al variare del parametro t. Cioe’ la direzione verso cui ā€˜va’ la curva.
Ma e’ solo per dare un’idea alla buona.

Quello che conta sapere (e ricordarsi) e’ che la derivata della curva e’ un vettore parallelo alla tangente alla curva.
Quindi calcolando la derivata otteniamo la tangente.
E dato che noi cerchiamo i punti in cui la tangente ha Y nulla, per trovarli cerchiamo i punti in cui la derivata ha componente Y nulla.

E’ chiaro ?

:slight_smile: :confused: :thinking: :smile:

Questo passaggio mi sembra gia’ piu’ complesso.
Ma e’ sempre cosi’ … all’inizio e’ tutto facile, poi arrivano gli impicci … :smile:

a riportarla credo che dovrebbe andare bene, spero che siano i valori 1 2 3 4 che danno il risultato 0 ?

ps non solo non so il perchƩ, nel senso effetto che ha una operazione singolarmente,
ma cosa più importante e che non so nemmeno quale risultato finale produce. . .

Allora non era proprio incomprensibile … :wink: :smile:

Bene !

Con valori Y dei CV 1, 2, 3, 4 e’ logico che non ci siano dei Quad. La curva sale sempre.
Ci vuole una curva con una forma adeguata … tipo questa:

immagine

Invece di scrivere le Y a mano, potresti costruire la curva usando dei punti come CV,
cosi’ trascini i punti in su e in giu’ e vedi cosa succede.

Dicevo…

Cioe’ ottieni i valori della t, cioe’ del parametro della curva.
Se li passi all’espressione della curva ottieni i due punti.

( E’ dall’inizio della discussione che la t rappresenta sempre il valore del parametro.
Non e’ cambiato niente … :wink: )

Esattamente come qui avevamo ricavato il valore di t e quindi il punto sulla curva.

Il calcolo che stiamo facendo per la BĆ©zier di terzo grado e’ lo stesso che quella definizione fa per la BĆ©zier di secondo grado.

I calcoli sono piu’ complesso perche’ il grado e’ cresciuto, ma la procedura e’ esattamente la stessa.

Convinto ? :slight_smile:

seguo il discorso ma non mi torna il fatto che io adesso ho un punto CV in più
quindi a differenza dell’esempio dove il grado ĆØ 2 e i CV sono 3
qui mi trovo con una cruva di grado 3 e 4 CV

debbo aggiungere un’altro componente decostruttore punto per prendermi il 4° valore Y, ed aggiungerlo
al componente Expression ovviamente quello centrale ed eseguire altre operazioni?

altrimenti mi vien da pensare che debbo Shiftare i punti?
nel senso: i primi 3 Cv applico la formula, poi salto il primo e faccio lo stesso dal 2° al 4°?

non so ho dei dubbi su questo, anche perché se sarebbe il ragionamento corretto dovrebbe fare con i gruppi di 4 CV essendo che una curva di 3° grado richiede 4 punti CV quindi i primi 4 poi dal 2° al 5° dal 3° al 6° ecc

secondo me per capire bene il funzionamento dovrei partire da come si forma la curva, scomporre una formula bene o male riesco, ma ho un vuoto sulla curva e sulla derivata che da come dici ĆØ importante.

osservando la foto la prima EXP con i calcoli delle formule coi CV ed i valori del dominio t
vengono creati una sequenza di punti che collegandoli forma una curva e fin qui tutto bene
(la stessa cosa viene fatto per la derivata prendendo come riferimenti altri valori e altre formule)
ma in entrambi i casi quello che mi sfegge ĆØ ad es: se aumento il dominio del valore t aumenta
la quantitĆ  di punti che formano la curva, mentre invece la seconda formula ritorna un solo valore

e diciamo che fin qui ci può stare, pensandoci bene in una curva con 3 CV che va a formare una specie di arco in quell’arco ci potra essere un solo punto Quad con Y=0 obbligatorio (se l’ora non’é tardi confermo)

eeee Emilio anche quest’ultimo ragionamento mi porta al discorso sopra che ho fatto prima:
o come la curva di grado 3 anche la derivata ha bisogno di 4 Cv e quindi si deve aggiungere
altre operazioni all’interno della 2° EXP oppure se basta la 2° formula in foto, si deve Shiftare

Quello che intendevo qui …

… era che la logica che seguiamo per ricavare i punti Quad e’ la stessa, se vuoi l’algoritmo e’ lo stesso, ma applicato alla curva di terzo grado.

I calcoli cambiano, la definizione e’ meglio rifarla da zero.
Non serve partire da quella per il secondo grado. Le espressioni sono diverse.

La nuova definizione e’ basata su quella che hai postato tu sopra:

Qui in pratica hai gia’ il calcolo dei punti Quad: hai i due valori di t che corrispondono ai Quad.
Se inserisci i 4 CV e il calcolo della curva, e’ finita.

Esatto

Ma vedo che il paragone con il caso di secondo grado puo’ creare confusione.
Lasciamolo stare e riprendiamo il ragionamento generale che stavamo facendo qui:

Calma … ci stavamo arrivando … se non saltiamo di palo in frasca :wink:

Riprendiamo da qui:

Questo si capisce o meno ?

ormai si ĆØ fatto tardi, credo che meglio riprendere domani. posto solo il risultato

1 Mi Piace

Certo. :slight_smile:

Ricordati di estrarre le Y.

Poi basta aggiungere il calcolo della curva per poter vedere la curva e i punti Quad.
Puoi usare l’espressione oppure anche i componenti GH gia’ pronti:

mi sa che forse, ho sbagliato qualcosa nella formula dell’espressione, vedo valori troppo alti.

Puo’ essere.
Se posti la def con i punti internalizzati, vediamo cosa succede.

1 Mi Piace

infatti, avevo mancato di mettere le parentesi tra le due operazioni finali.

1 Mi Piace

Altro modo di ricavare i Quad, senza usare espressioni:
Dato che la derivata di una curva di BĆ©zier e’ a sua volta una curva di BĆ©zier …

Ad esempio:
immagine

da qui:

Possiamo utilizzare i componenti GH e intersecare il grafico della derivata con la curva Y = 0

salvio-25.gh (12,6 KB)

eeee bella questa non me l’aspettavo :clap: la provo subito con la curva di esempio di qualche annetto fa
cosi vedo le differenze anche delle derivate.

stavo pensado ad una cosa osservando la tua foto, e se invede della linea ci mettessi un piano?

Nell’esempio postato la curva originale e’ nel piano XY, quindi basta la linea.
Per una curva 3D si puo’ usare il piano.
Anzi, direi che con 3 piani puoi cercare i Quad per ogni vista, X, Y o Z …
Ma non ho provato, forse dico cavolate … :confused: :smile:

E credo che orientando il piano opportunamente possiamo trovate i ā€œQuadā€ anche per viste inclinate …
Ma … stesso discorso di prima sulle cavolate. :smile:

Emilio, ancora non ho gridato vittoria, essendo che sto cercando di affinarla nei dettagli
in questo caso avevo inserito sia i valori Y che X per calcolarle entrambe
ma credo che bisogna verificare il componente ā€œClean Treeā€
a come sembra non funziona come dovrebbe. . .

certo, era se nel caso una derivata potesse avere un’ampiezza maggiore della linea