Formula per CurvaNurbs

Te lo dicevo sopra:

Se la curva ha grado maggiore, non basta considerare 3 punti.
Per il grado 3 ce ne vanno 4, per il 5, 4 punti e cosi’ via …

Per il grado 2 basta una equazione di primo grado, che e’ banale.
Per il grado 3 ci vuole quella di secondo grado, che e’ gia’ decisamente piu’ complicata, ma in genre si puo’ comunque risolvere, ma certo ci vanno 2 formule perche’ puo’ avere 2 soluzioni.
Io non sono in grado di risolvere equazioni di trezo grado (o superiore)
E credo che oltre forse il quinto grado non si conoscano nemmeno le formule …
Per quello parlavo ci cercare eventualmente altre vie.

Il tutto ovviamente per il poco che so io.
Altri ne sapranno certamente piu’ di me … speriamo si faccia vivo qualcuno. :slight_smile:

La tua idea in certo senso forse si potrebbe applicare interpolando curve di grado maggiore con Bézier di terzo grado.
Secondo direi di no perche’ non puo’ avere flessi, cioe’ gira sempre dalla stessa parte …
Ma sono ipotesi …

già riuscire ad imbastire equazione per una curva di grado 3 quindi con 4 punti si sarebbe fatto il 90% :wink:

ecco Emilio, ho postato il link del video e due foto nei corrispettivi min dove spiega ciò che mi interessa

non so se riesco a riepilogare bene il tutto ovviamente invito a vedere il video:
in sintesi da quello che ho capito è tipo la soluzione che diede Leopoldo tempo fa come alternativa alla creazione della derivata per trovare i punti Quad. praticamente in una curva continua la si suddivide in tanti piccoli segmenti fino a che il segmento più grande “calibro” risulti non superiore alla tolleranza prefissata.

poi come si vede nel video usa la parametrizzazione del dominio 0-1 e mostra varie formule
(non so se sono proprio quelle postate, da vedere anche quelle con il link in inglese “più dettagliato”)

da questo video è iniziato tutto il ragionamento di lavorare sulle formule apposite
nella creazione delle curve, per trovare i punti Quad come pure i punti del comando Curvatura

e altra cosa importantissima, se il discorso della divisione della curva del video come appunto spiegato sia lo stesso sistema che utilizza Rhino?

1 Mi Piace

La derivata e’ questa:
immagine

annullando la derivata, otteniamo:

t ^ 2 ( p_3 - 3 p_2 + 3 p_1 - p_0 ) + t ( 2 p_2 - 4 p_1 + 2 p_0 ) + ( p_1 - p_0 ) = 0

Scomporrei la soluzione (le soluzioni) in questo modo:

definiamo i valori a, b, c e d
( usando adesso la Y al posto del punto P )
e infine ricaviamo i valori del parametro.

a = y_3 - 3 y_2 + 3 y_1 - y_0

b = 2 y_2 - 4 y_1 + 2 y_0

c = y_1 - y_0

d = b ^ 2 - 4 a c

infine per i due valori di t ricavati:

t_0 = \frac{ - b + \sqrt{ d }}{ 2 a }

t_1 = \frac{ - b - \sqrt{ d }}{ 2 a }

(sempre se non ho scritto male …)

Per avere 2 risultati reali, quindi validi, quindi 2 punti in cui la curva ha tangente a Y costante,
userei una disposizione dei CV “a S” per cosi’ dire, cioe’ ad esempio il primo in basso, secondo in alto, terzo in basso, quarto in alto.

Perche’ a seconda della forma della curva possiamo avere 0 o 1 o 2 punti Quad.
E la cosa andrebbe gestita … ma mi sembra gia’ abbastanza complicato cosi’.

1 Mi Piace

scusa Emilio,
in b il primo 2 dovrebbe essere un -2 ?
in c y1 - y0 ?
per la d non saprei ? ? ?

E’ sbagliata la formula lunga, non c’e’ il ‘meno’

Si’, hai ragione

Adesso correggo
Grazie per il debug ! :slight_smile:

vorrebbe essere B al quadrato meno 4 per A per C

Visto.
Intanto l’insegnante non mi sembra dei piu’ capaci a spiegare …
E comunque parla di calcolare la lunghezza di una curva parametrizzata tramite il tempo, in pratica una traiettoria.
Fa riferimento a video precedenti e usa gli integrali.

A quanto so io gli integrali vanni bene ad esempio per trovare la lunghezza della curva, come qui.
Ma non c’entrano niente con la ricerca di punti a tangente orizzontale o con minimi o massimi di curvatura.
Per quello servono le derivate.

Oppure calcoli un mucchio di punti sulla curva e poi vai a cercare, misurando quei punti, zone dove la tangente o la curvatura sembrano assumere dei valori opportuni, entro una certa tolleranza.
Ma una tolleranza generalmente c’e’ comunque dato che utilizziamo numeri di lunghezza finita.
La differenza credo sia che la soluzione analitica, usando le derivate, e’ piu’ veloce.
Quella numerica, usando i punti calcolati sulla curva, di norma piu’ lenta.

EDIT:

Poi se si tratta di curve di grado elevato, come abbiamo detto in precedenza, anche usando le derivate il calcolo puo’ diventare complesso.

1 Mi Piace

su questo come già disquisito mi riferisco sempre a grado 3, al massimo il 5 potrebbe essere la ciliegina sulla torta, magari con il tempo comprendendo il funzionamento chissà se ci potrei arrivare anch’io :wink:

si esatto infatti come detto sono partito dalla formula per creare una curva Bezier per arrivare al resto

nel senso, ricordo che in una discussione fu provato questo metodo, ma non si trovavano i punti precisi
per questo sto cercando il modo di ottenere queste cose tramite formule di espressioni
con ultimo esempio che hai postato, facnedo il Bake in Rh mi ritrovo lo stesso punto
e poi è istanzaneo senza colli d’imbuto, mentre ricordo alcuni metodi praticati nel passato per trovare questi “tipi” di punti sulle curve, non erano immediati e a volte non erano nemmeno precisi confrontandoli in Rhino

comunque era giusto per completare la chiacchierata, alla fine ritengo stupefacente questo metodo per così dire di lavorazione, speriamo di non essere bannati dal forum per divulgazione codici ahahahah

t ^ 2 * ( p3 - 3 * p2 + 3 * p1 - p0 ) + t * ( 2 * p2 - 4 * p1 + 2 * p0 ) + ( p1 - p0 ) = 0

Emilio solo adesso sono riuscito a riguardarla, sai che per me questo tipo di cose mi richiedono uno sforzo colossale, comunque per le prime 3 a b c sono riuscito a seguire il ragionamento, per la d ho come riferimento solo la prima t ^ 2 mentre per il - 4 * a * c da come vedo scritta la formula lunga non avrei fatto questo: d = b ^ 2 - 4 * a * c quale ragionamento si deve fare per arrivare a questa conclusione?

Bisogna studiare le equazioni di secondo grado.
Questo valore, che di solito si chiama “delta”, si usa per calcolare le soluzioni, come vedi nelle ultime 2 formule.
Anzi, prima si usa per capire se ci sono soluzioni e quante, e poi nel caso per ricavare il loro valore.
Ma noi per semplificare consideriamo che le soluzioni ci siano.
Se non ci sono GH dara’ errore, va bene cosi’. :wink:

Capisco, pero’ se vuoi interessarti di geometria, tocca maneggiare queste cose.
Anzi io consiglierei di iniziare a impratichirsi con (o ripassare) un poco di algebra.
Maneggiare le variabili e’ indispensabile se non vuoi limitarti a copiare formule. :slight_smile:

1 Mi Piace

Lascia perdere, prendila per buona, così com’è.

1 Mi Piace

Ciao Salvio, come dice Emilio ci vuole un pochino di conoscenza/ripasso.
Ma siccome vedo che sei curioso e volenteroso, e siccome mi sono reso conto che non mi ricordavo più da dove salta fuori :roll_eyes: proviamo a ricostruirla passo passo.
La nostra equazione ha la forma:

image

se moltiplichiamo per 4a entrambi i membri l’equazione diventerà:

image

Sommiamo b^2 a entrambi i membri:

image

Ora basta ricordarsi che (a+b)^2=a2 + b2 + 2ab per riconoscere nel primo membro il quadrato di (2ax+b), quindi avremo:

image

Ora che ce la siamo ricavata dobbiamo convenire con Sergio, impariamola a memoria e amen. :rofl:

2 Mi Piace

Su gentile richiesta der sor Emilio: e LATEX sia!
Ora potete scrivere “bene”… :smile:
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}

si scrivequello che si vuole: iniziando con carattere $ e finendo con lo stesso carattere dollaro

\sum_{n=1}^{\infty}gnapossofa_n

6 Mi Piace

eeee Giuseppe gioca bene, è stato tutto il tempo dietro le quinte, è alla fine ha tirato fuori asso dalla manica
:smile: :smile:

∑∞n=1gnapossofan

non è venuto uguale. . .


giustissimo, non posso di certo contraddire un dato empirico :smiling_face:
unica speranza, e che come con i linguaggi di programmazione, a furia di vederli 10 100 1000 volte
poi pian piano la cosa diventa familiare, e quindi invece di vedere numeri formule ecc vedo il risultato. . .

Allora riscriviamo bene. :smiley:

ax^2+bx+c = 0
4a^2x^2+4abx+4ac= 0
4a^2x^2+4abx = -4ac
4a^2x^2+4abx+b^2 = -4ac + b^2
(2ax +b)^2 = b^2 - 4ac
2ax + b = \pm\sqrt{(b^2 - 4ac)}
2ax = -b \pm\sqrt{(b^2-4ac)}
x = \frac{-b \pm\sqrt{b^2-4ac}} {2a}
5 Mi Piace

stai infierendo così però ahahahah

:rofl: :rofl: :joy:

ps ma come hai fatto?

Salvio, scrivi le formule tra i simboli $.
Se racchiudi tra doppio $$ il testo viene centrato.
Poi per ogni simbolo/operatore ci sono i vari comandi, ad esempio \sqrt(a) ti scrive la radice quadrata di a.

\sqrt(a)

i simboli del dollaro li ho inseriti, ma la lista dei vari simboli/comandi dove la trovo?


\sum_{n=1}^{\infty}gnapossofa_n

copiando il codice quotato di Giuseppe, viene riportato senza formattazione

\sum_{n=1}^{\infty}gnapossofa_n

bella sta cosa :+1:


ps la frazione come viene fatta?

1 Mi Piace

Come ha detto Giuseppe: questa e’ formattazione LaTeX

Prova qui:
https://www.guitex.org/home/

3 Mi Piace

ok io avevo trovato questo:

wauuu e dopo tanti anni, si è scoperto che era possibile anche questa cosa :+1:

1 Mi Piace