Punti estremi nella curva originaria

Emilio, non comprendo bene quello che dici;

la derivata che intendo sarebbe la tangenza della curva nel punto del parametro t
l’angolo di 90° con asse Y come nella foto si verifica nel punto 0.5 che combacia col Quad

ho usato questo termine (spero corretto) essendomi collegato al video con la spiegazione che ho postato
di fatto, ho notato che anche Giuseppe nella prima risposta, ha usato proprio il componente derivata
che se noti nella foto sopra, ha sei tipi diversi di derivate (velocità accelerazione ecc non so cosa indicano)

nel video si parlava che man mano che la derivata/tangenza della curva si muovesse dal punto 0 al punto 1 indicava la direzione pendenza di m crescente, poi arrivata alla sommità è stazionaria per poi decrescere.

faccio un ragionamento e spero che abbia qualche elemento valido:
usando il mio codice postato inizialmente, forse se azzero il primo angolo del valore T con X o Y
poi ad ogni punto estremo minimo trovato l’angolo si azzera di nuovo ricominciando il confronto

Esatto Leopoldo,

è proprio questa la soluzione, bravo!. Se il massimo e il minimo del bounding box viene
determinato dai punti estremi della curva non esiste tangenza rispetto agli assi di riferimento
(sempre che i punti siano stati scelti in modo adeguato).
In sostanza i punti di intersezione restituiti dall’intersezione curva bounding box che differiscono
dagli estremi della curva sono punti di massimo/minimo.

Sergio

Ciao Salvio

la curva usata nel video per spiegare la derivata è una curva esplicita e la derivata è un numero.
Le curve di rhino sono parametriche e la derivata è un vettore (dx,dy,dz).
Le componenti della derivata indicano la direzione della curva rispetto agli assi di riferimento.
Ad esempio (-7,5,0) indica che nel punto assunto la curva:

  • è “decrescente” rispetto a X (in quanto dx è negativo) → va verso “sinistra”
  • è “crescente” rispetto alla Y (in quanto dy è positivo) → va verso “l’alto”.

Quindi se in P0 la derivata è (2, 5) e in P1 la derivata è (4, -3) la curva procede verso
destra (entrambe le componenti x sono positive) e tra il punto P0 e P1 c’è "almeno"
un massimo (in P0 dy è positivo mentre in P1 dy è negativo).

Ovviamente se dy è circa 0 (… c’è sempre il discorso della tolleranza …) il punto è un
massimo oppure un minimo. Ovviamente capisci se è un massimo oppure un minimo
analizzando il punto successivo e precedente.

La scelta dei punti sulla curva è fondamentale perché potresti perdere dei punti.
Immagina che tra i due punti P0 e P1 la curva abbia una forma ad S: le due derivate
hanno direzioni simili ovvero le componenti dx e dy hanno medesimo segno.

1 Mi Piace

Ciao Salvio, un parere te lo do volentieri ma dimentichi che non so usare GH. :worried:
Tutto quindi è condizionato da quanto ho capito della tua definizione, probabilmente poco.

Correggimi se sbaglio.

  • Riporti sulla curva un tot di punti e su questi calcoli il vettore tangente
  • Filtri i punti dove il vettore assomiglia al valore che desideri
  • Poi, con quei punti, crei dei piccoli segmenti (Edit: spezzoni della curva) “intorno” ai punti papabili
  • Ripeti sostanzialmente lo stesso procedimento sui segmenti così ottenuti

Se non ho capito puoi interrompere la lettura qui, sorry.
In caso contrario, il tuo sistema di affinazione non mi convince molto per due motivi.
Il primo e che credo sia equivalente a quello che fa la prima parte della definizione a patto di aumentare i punti campione.
Il secondo, che è un limite intrinseco al ragionamento, è che si spera nello stellone, nel senso che si piazzano i punti a caso e si spera che si avvicinino a quelli desiderati entro la tolleranza imposta.
Certo non avremo mai il punto di tangenza geometricamente corretto con nessun metodo, la precisione della macchina lo impedisce, ma pensavo ad un algoritmo di affinazione migliore, qualcosa che converga sul punto migliore e non lo scelga a caso tra i molti…
L’idea degli “intorno” del punto mi piace, ma l’avrei pensata in maniera diversa.

1 Mi Piace

Dimmi che fai analisi matematica senza dire che è analisi matematica… :smile:

2 Mi Piace

E’ uno di quei componenti dove poi aggiungere o eliminare le uscite, se lo ingrandisci dovrebbero comparire i simboli “+” e “-”.
Questo perché una funzione potrebbe essere derivabile più volte.
Non sono quindi sei diversi tipi di derivate ma sono le derivate “successive”.
Per chiarire, se derivi una funzione ottieni la derivata prima - se derivi la derivata prima ottieni la derivata seconda e via discorrendo.
Sul tuo componente hai attivato fino alla derivata sesta (Pop).
Giusto per chiarezza la derivata indica quanto cambia il valore della funzione che stai derivando rispetto al suo argomento.

se la prima derivata coincide con la tangenza nel punto della curva
dalla foto però non mi sembra che riporti la tangenza della tangenza
hanno anche specifiche diverse nella descrizione popup col mouse
1 = First curve derivative at t (Velocity) - 2 = accelerazione - 3 non ricordo :smile:

questi termini mi fanno venire in mente un video di Giuseppe dove spiegava
proprio questi concetti del parametro t sulla curva dove accellerava in certi punti

(gli altri 3 riportano il punto sulla curva del valore t non ho idea dell’utilizzo)

ps ma quindi se la tangenza della curva la chiamo derivata è corretto?

Fabio, in verità non l’ho dimenticato, ma ero più che sicuro che non avresti avuto nessun problema.
anzi, di sicuro io non sarei stato così preciso e chiaro nella spiegazione come hai fatto tu :+1:

si, il fatto di ripetere due volte lo stesso procedimento anche a me non piace proprio, ma essendo che
nel passato mi è stato consigliato di usare anche metodi bruti personalmente non ho trovato di meglio,
tenendo conto che a volte provando ad aumentare i valori del parametro t nel primo step il pc si blocca.

eeee magari si potesse arrivare ad un risultato simile sarebbe perfetto, ma alla fine poi mi sono chiesto:
se fosse fattibile, una soluzione la McNeel l’avrebbe realizzata con un metodo o con un componente no?

ho pensato che fosse lo stesso ragionamento fatto dalla McNeel con il comando linea tangenza 2curve,
essendo che si deve comunque cliccare sui punti delle due curve per indicare una zona interessata.

Umn no, stiamo facendo confusione.
La derivata di una funzione, valutata in un punto x0, se esiste in quel punto ovviamente, rappresenta il coefficiente angolare della retta tangente alla funzione nel punto (x0, f(x0)).
Ocio che non puoi derivare quante volte vuoi, senza fare ulteriore confusione diciamo che una funzione di grado n è derivabile (n-1) volte.
Per i nomi delle varie derivate:

derivata terza Jerk
derivata quarta Snap
derivata quinta Crackle
derivata sesta Pop

Il significato fisico di queste lo ignoro! :joy:

1 Mi Piace

Ma i nomi potrebbero anche essere un’invenzione di Dale …
Ricordo di aver letto che i nomi piu’ divertenti dei comandi Rhino erano farina del suo sacco.

Grande Dale !
:grinning_face_with_smiling_eyes:

1 Mi Piace

ciao Sergio,

infatti stavo cercando un modo in Py/Gh per convertire anche le derivate parametriche in numero
esiste una funzione/metodo in Py oppure un componente in Gh preposto a tale scopo?

si di questo discorso +/- mi era chiaro, quello che mi è difficile fare è realizzare uno script
che gestisca le coordinate X e Y con i reliativi segni +/- per poi comportarsi di conseguenza.
considerando quanto detto sulle differenze tra le curve esplicite e parametriche,
a questo punto mi domando se calcolando angolo tra tangenza e la Y serva o no?

a tale riguardo (mio pensiero) essendo che ho impostata la tolleranza in 0.001 sia in Rh che Gh,
quando divido una curva riparametrizzata in vari punti uso come valore 999 o per più precisione 9999
nel mio ragionamento anche quando si parla di dividere una curva con un valore t consederando tale
tolleranza ho ritenuto che tali range possano andare bene per ritrovarmi gli stessi risultati di Rh/Gh

ragionamento valido, oppure gli argoritmi dei comandi Rh e componenti Gh usano tutt’altra logica?

Fabio non so dove hai preso quei nomi :smile:
io intendevo quando posizioni il mouse sui numeri di output del componente derivate:
Velocity / Acceleration / Jolt / Jounce / t / t a me escono questi nomi per ogni numero.

Mi pare in un vecchio testo di geometria differenziale, ma non ci giurerei, la memoria fa spesso cilecca oramai. :worried:
Ho guardato il componente, dalla derivata quinta in poi non assegna nomi, parla genericamente di derivata n-esima valutata in “t”.
I nomi comunque non coincidono, boh.
Non che serva a molto.

la derivata m = dy/dx
Se la usi perderai solo tempo: il rapporto ti fa perdere i segni.
Per questo di seguito nel post ti ho evidenziato come procedere considerando le singole componenti.

Calcolare l’angolo è inutile perché hai la derivata …

Fai prima a farti restituire da rhino la polyline che approssima la curva impostando le tolleranze
adeguate e ragionando solo con le coordinate dei punti.
Gh non fa nessun calcolo … usa le librerie di rhino cosi come rhinocommon. Prova ad usare
le funzioni di rhinocommon fuori dall’ambiente di rhino … non funzionano! :joy:
La scelta dei punti non è un numero a caso ma deve tenere conto della curva:
grado e vettore dei knot. Di conseguenza il numero di punti si riduce drasticamente. Con 1000
a mio parere puoi analizzare una curva di grado 3 con 150 punti di controllo …

ciao Sergio, dici tipo una cosa simile a questa def: serg2.gh (10,3 KB) ?

nel video sopra postato “rimappando tipo derivata” la curva come la prima immagine postata,
dopo potrei usare il primo script Py postato per trovarmi i punti estremi superiori ed inferiori;

  1. in questo caso sarebbe una procedura corretta oppure sballo tutti i parametri della curva?
  2. il metodo usato nel video è comparabile alla def postata in questo post oppure non centrano nulla?

scusate le tante domande ma posso solo mettere in pratica le idee che mi vengono in mente,
purtroppo manca il modo di analizzare e confrontare le diversità dei vari metodi e relativi risultati :sweat:

se la procedura del video fosse corretta, potrebbe essere applicabile anche ai tipi di curve asimmetriche?

edit:
risultato di quanto appena detto sopra

ad occhio, di sicuro non proprio preciso. (rimangono aperte sempre le tre domande finali)

Non conosco GH e non lo uso … inoltre è un altro argomento rispetto al titolo del post.

1 Mi Piace

Non sempre c’è, ma potresti pensare alla rapidità con cui cambia la funzione derivanda.
Il mio docente di Scienza delle costruzioni si è occupato di viscoelasticità e derivate frazionare, non intere quindi, come si è soliti vedere.

http://www1.unipa.it/fabio.bagarello/didattica/Di%20Paola%20e%20Pinnola_calcolo%20frazionario.pdf

Qualcuno mi corregga se dico corbellerie, ma quando si vuole ricostruire localmente una curva simile a quella data si usa lo sviluppo in serie di Taylor che approssima la stessa ad un polinomio utilizzando derivate ennesime.
Questo strumento matematico è estremamente potente e di quotidiana e ormai perenne applicazione.

Un polinomio è sempre facilmente derivabile e quindi continuo e questo semplica la rappresentazione ad opera di un calcolatore e semplifica la vita a chi vuole analizzare dati e prevedere andamenti.

Matematicamente le vedo così, ma fisicamente continuo a non coglierne l’essenza. :thinking:

Grazie per la condivisione, lo guarderò sicuramente, anche se non ci capirò molto. :roll_eyes:

Eh sì, bel “trucco”.
Se Peano e Lagrange non si lamentano è un ottimo metodo. :joy:

Perché dovrebbero? :grin: