Aiuto per capire

oltre che ad un 3d interessante (per vari aspetti) alcune cose che ignoro non mi permettono la soluzione,
nella discussione del link “mi sembra” che si divide in più parti, dove ci sono diverse soluzioni:
“credo” di aver capito le prime due soluzioni, ma quella di “Akilli” non ci riuscirei proprio.

qualcuno mi potrebbe spiegare il ragionamento dietro al funzionamento di tale definizione?
l’incastro dei denti tra due oggetti c’è l’obbligo di Kangarro oppure è possibile con i componenti standard?
ps (ripeto non ho bisogno di una definizione) grazie a tutti come sempre.

preciso una cosa dalla dichiarazione linkata:

“The equations for rolling contact are not that difficult,
the real messiness is in calculating the teeth profiles for gearing.”

come espresso da Akilli, tramite una espressione è possibile calcolare il contatto/rotolamento
l’aspetto che mi interesserebbe conoscere è proprio questo non tanto i denti che si incastrano.
(ma a differenza della forma ovale iniziale del post, avere a disposizione una forma astratta)
davvero sarebbe “abbastanza” facilmente fattibile come viene indicato da Akilli?

… quale definizione? Hai linkato un post che linka un video di youtube probabilmente realizzato con un’altro software…

A mio opinione direi sicuramente senza kangaroo. … ma è un’opinione.

L’argomento è interessante, puoi rifare la domanda? Non ho capito cosa vuoi fare in specifico…


Questa è na roba che feci anni fa Irregular gear animation - Grasshopper

ciao Riccardo, grazie per la risposta e complimenti per per il tuo link
certo che quello che hai realizzato è un bel po contorto veramente bravo

eeee io credevo che il video mostrato da Akilli fosse il risultato di una definizione fatta con Gh

da quello che ho tradotto dalla discussione l’autore del post stava lavorando con calcoli matematici triangolizzando le distanze dei due punti e “credo” il contorno dell’ovale che coincide con tangenza retta.
mentre tu hai mostrato e spiegato un’altro tipo di approccio migliore e preciso, cioè quello geometrico.

citazione di Akilli: “The equations for rolling contact are not that difficult”

tenendo in considerazione la tua opinione, riformulo la domanda nata dalla citazione che ho riportato:
utilizzando Gh è davvero così “facile” far rotolare sul perimetro le geometria irregolare (senza ingranaggi)

collisione

in pratica dalla foto, la forma piccola rotola con il suo perimetro toccando sopra il perimetro di quella grande
(ovviamente senza entrare all’interno del perimetro l’una con l’altra)

Forse manca qualche presupposto, ma direi di si:

2021-09-19 15_10_43-Grasshopper - rolling curves
rolling curves
rolling curves.gh (9,1 KB)

Nota:

  • se ci fossero state parti concave, sarebbe stato possibile iniziassero ad esserci intersezioni, in questo esempio funziona sempre proprio perché entrambe le curve sono convesse in ogni loro parte;
  • la direzione delle curve l’ho sistemata a mano;
  • la lunghezza delle due curve non è multipla tra loro, è impossibile “dentare” queste curve… nel caso di quell’animazione che avevo fatto anni fa avevo infatti scalato le curve fino a che avessero una lunghezza pari a un numero tondo (intero); non c’era un rapporto intero tra le lunghezze, ma almeno si potevano dentare.


Dicevo questo perché, nel caso di questo piccolo esempio ^ e di quella mia animazione linkata sopra, non c’è un interasse costante.
In pratica i perni delle due sagome dovrebbero costantemente avvicinarsi e allontanarsi, e questo significa che, salvo usi particolari come camme o altro, diventa complicatissima una applicazione pratica nel mondo reale.

Un’altra cosa sono invece gli “ingranaggi non circolari” , come quelli che hai linkato tu inizialmente (il video di youtube), dove si costruisce la ruota dentata primaria (driving gear) in base a una funzione di velocità/andamento voluta, e si calcola la ruota dentata derivata (driven gear) in base appunto alla forma della primaria e al rapporto tra i due (che penso sia per forza di cose un numero intero)
In quel caso l’interasse è costante e gli usi pratici non mancano.

2 Mi Piace

Provo a “dentare” le curve ovviamente in modo molto semplice.
rolling curves a.gh (25,7 KB)

1 Mi Piace

grazie ragazzi ottime soluzioni non ci sarei arrivato :+1:
quindi come aveva affermato Akilli per le forme convesse non era difficile la soluzione
io invece come da foto stavo tentando direttamente con due geometrie concave
che è un’ipotesi che potrebbe capitare, inizialmente le trasformavo in superfici,
l’intenzione era di non far entrare nell’area reciproca, ma poi optato altra strada
cioè stavo utilizzando il componente “Convex Hull” che se ho capito bene
calcola la parte concava di una forma, ma in questo caso sembra che
raggiro il problema, trasfomando la forma concava in convessa

ps (meglio ascoltare prima le opinioni degli esperti)
voi cosa pensate, partendo dalle due definizioni che avete postato,
l’implementazione nel calcolare la parte convessa sarebbe complicata?
ovviamente se si tratta di alcune modifiche, sarebbe una strada fattibile,
ma se poi bisognerebbe creare una super def come quella di Riccardo
tipo il link “irregular-gear-animation” ovviamente meglio desistere. . . .

pps mica per caso l’uso del componente “Convex Hull” potrebbe
aiutare a tale scopo, calcolando la differenza tra le due aree,
quella originaria concava, e quella chiusa con “Convex Hull”?

Io… non sono sicuro di seguirti. Cosa intendi?

Premetto che non sono esperto del settore… ma penso di riuscire a districarmi bene.

Ci sono:
A- gli “ingranaggi non circolari” (vedi link wiki, link di akilli) dove la prima ruota dentata è pre-determinata, e la seconda/derivata è calcolata. Interasse costante, usi pratici, ecc
e
B- gli ingranaggi “a caso” (dico io), come quelli fatti da me sul vecchio forum o nell’esempio .gh qua sopra… dove entrambe le ruote dentate hanno una forma unica. Interasse non costante, quasi nessun uso pratico, ecc ecc…
(la def che ho postato nel vecchio forum era proprio una auto-sfida a ingranare tra loro 4 ingranaggi “a caso”… non ha niente di valido oltre a quello…)

Ti interessa A o B? :sweat_smile:

collisione

riposto la foto cercando di spiegarmi meglio con un sempio:
credo che per quello che intendo, è meglio pensare a forme solide in 3d
abbiamo queste due geometrie diciamo che sono di plastica in 3d tipo lego
le combacio e le faccio ruotare l’una con l’altra seguendo i propri perimetri
quando una ha una parte concava si incastra nella parte convessa dell’altra
ovviamente per quello che può incastrarsi essendo che le forme sono diverse
e nel caso capitasse due parti convesse rimarrebbe lo spazio vuoto ovviamente

ps come se la parte concava non dovrebbe rientrare nel valore “t” di evaluate
spero che mi sono spiegato nel caso, dimmi cosa non’è chiaro.
(quindi gli ingranaggi in questo caso non ci sono)

Allora vuoi una simulazione fisica vera e propria… e tutta la questione non ha nulla a che fare con le ruote dentate.

Purtroppo non riesco ad immaginarmi come si potrebbe rendere utile kangaroo, non c’è modo di creare attrito tra le geometrie e quindi l’effetto “rotolamento” andrebbe a perdersi.
Servirebbe creare una soluzione iterativa, facendo tantissimi piccoli passi come nella soluzione .gh qua sopra e controllando se si creano intersezioni. Quando si creano intersezioni si dovrebbe passare ad un nuovo punto di contatto su cui continuare a rotolare.
Fattibile, ma non vedo dove si andrebbe a parare…

se ho capito bene quello che hai detto, il funzionamento degli ingranaggi “anche se con forme diverse”
(come alcuni esempi che hai anche postato) funziona perché esiste un determinato fattore
tra le lunghezze delle curve e avendo ovviamente il passo degli ingranaggi identici
quindi in tutto quello che si è linkato non esiste nulla che usi “attrito”. . . .

eeee diciamo che fino all’intersezione ci sono arrivato, il problema anche teorico che non riesco a superare come faccio a continuare a girare il potenziometro e far continuare la rotazione dal nuovo punto di contatto?

anche se in modo contorto l’unico metodo che mi viene in mente e dividere la def in più parti
in pratica ad ogni punto di intersezione si dovrebbe replicare la def fino all’altra intersezione
ma ovviamente non la considero nemmeno questa ipotesi, ma non riesco ad inventarmi nulla :expressionless:

ps non so fino a che punto sia “valida/fattibile” ma l’idea che ho detto prima mi sta allettando. . . .
dominio 0-1 parte da “0” fino al punto di intersezione “0,4” la zona concava dominio da “0,4” a “0,6” altro
punto di intersezione e quindi per concludere dal secondo punto di intersezione “0,6” fino a “1” e si chiude

che dite e tutto una castroneria o c’é qualcosa che si può salvare?

edit:
il dominio delle curve lo si potrebbe dividere usando il componente “Convex Hull” che dite? ? ? ?
nel frattempo inizio a fare qualche prova :+1:
(se sono fuori strada fermatemi :sweat_smile:)

Parlavo riguardo a kangaroo. Una simulazione fisica con attrito risolverebbe le cose velocemente, circa.

Col metodo di fare evaluate length della curva e poi orientare/posizionare le ruote una all’altra, è praticamente come se ci fosse un rotolamento perfetto, senza scorrimento.


Non riesco a seguirti bene perché non hai postato alcuna definizione o immagine…
Io proverei la strada iterativa, con anemone.

Butto su una definizione al volo.


crazy rolling curves
crazy rolling curves.gh (22,0 KB)

Ogni tanto fa delle compenetrazioni un po troppo visibili, bisognerebbe ridurre ulteriormente i “passetti” che fa… ma si muoverebbe ancor più lentamente.

2 Mi Piace

esattamente quello che intendevo “crazy rolling curves” crazy in onore mio ahahaha :laughing: :laughing:
sei stato proprio una potenza Riccardo “Butto su una definizione al volo.” invece l’hai fatta punto :clap:

non’é una sviolinata del momento, ma l’ho sempre detto e questa è una ulteriore conferma
le persone che “vivono” questo forum sono persone speciali, tutti competenti, specializzati
ognuno nel proprio campo specifico, e tutti veramente bravi professionisti con la passione
vera per il lavoro che fate. scusa l’entusiasmo, inizialmente non ero sicuro della fattibilità :man_facepalming:

ps unica precisazione, rallentando la rotazione in alcuni punti si blocca. non dirmi nulla :pray:
ma di sicuro è qualche sottigliezza di poco conto facile da risolvere, per il resto è perfetta :+1:

di nuovo complimenti e grazie Riccardo, adesso vado che si è fatto veramente tardi :wave:

@RiccardoMajewski mi correggo quanto detto, la def funziona perfettamente, non avevo capito l’impostazione iniziale da settare del numero di interazione da ripetere. grazie ancora :+1:

1 Mi Piace

Si può alzare l’asticella! (o abbassarla se si pensa al limbo!)

L’animazione “stuttera”, perché i passetti sono costanti, ma in base alla curvatura della curva varia la sua velocità di rotazione … non bello da vedere.

Possiamo tracciare un grafico!
Un grafico di roto-traslazione, rotazione+traslazione.
Dato che l’intero problema è 2D, possiamo usare dei punti 3D per salvare tutte le informazioni: X e Y per la posizione, e Z per l’angolo:
graph1
Il grafico sarà una interpolazione tra i punti, ottenendo un movimento potenzialmente più fluido e corretto dell’originale.
(e in questa face ci salviamo i punti che avvengono durante una collisione, per poter suddividere il grafico in più porzioni così da ottenere delle cuspidi tra le porzioni, ovvero un improvviso cambio dell’andamento della posizione: le collisioni)


Poi, possiamo “interrogare” il grafico!
Facendo una intersezione tra il grafico e un piano parallelo a XY di un valore pari all’angolo voluto, otterremo un punto che conterrà le informazioni sufficienti a ri-orientare in posizione la sagoma!
Essendo al di fuori delle iterazioni di anemone, possiamo creare una animazione con qualsiasi velocità e direzione:
graph2


Poi, dato che il grafico di roto-traslazione contiene i vertici delle collisioni, possiamo:

  • rimuoverli
  • estendere le varie porzioni di grafico
  • intersecarle tra loro
  • ricostruire le porzioni di grafico usando i nuovi punti
  • ricostruire il grafico intero

Il risultato è che potremmo alleviare/mitigare le collisioni:
graph3
Questa è solo un’idea, è possibile migliorarla.

crazy rolling curves V1.5.gh (41,2 KB)

6 Mi Piace

Le ruote dentate non funzionano per attrito, anzi si scelgono perché non hanno attrito dissipano poca energia al contatto.
Gli accoppiamenti dentati hanno solo la componente normale e non hanno la componente tangenziale della forza di contatto, sono studiate così per trasferire più energia.

È vero, ma io non l’ho mai alluso.
(Le ruote dentate di solito vengono “simulate” sia matematicamente che geometricamente come se fossero ruote di frizione aventi diametro uguale al loro diametro primitivo.
La ruota dentata non è altro che l’evoluzione della ruota di frizione…)


Nel nostro caso si stava cercando di simulare la rotazione di una sagoma convessa sull’altra… e l’attrito era in riferimento ad una ipotetica simulazione fisica tipo con kangaroo!
Con sagome aventi lunghezze non multiple tra loro una dentatura è impossibile, ma si potrebbe scalare una sagoma fino ad ottenere un rapporto intero… (come già detto)
… ma avendo sagome che addirittura hanno “nicchie” concave non compatibili, le sagome in realtà camminano una sull’altra, una qualsiasi dentatura in questo scenario è completamente impossibile.
Quindi si, lo script in pratica sta simulando un attrito totale tra loro… come se fossero addirittura appiccicose.


In ogni caso una simulazione, che sia matematica o fisica, preferirei sempre farla sulle geometrie primitive piuttosto che sulle geometrie dentate. (e nel caso di quella fisica servirebbe un metodo che simuli l’attrito…)
La dentatura possiamo tranquillamente farla per ultima, se è possibile farla.

4 Mi Piace

Ciao Ricc,
Non mi sono addentrato nella questione, ma mi aveva attirato questa frase.
. Se scrivi “quindi” io intendo che l’attrito è condizione necessaria al rotolamento e non è così, tutto qui.
:wink:

eh… li riferivo ancora a un contesto come al 5° post, senza denti, simile alle ruote di frizione. Magari non sono stato molto chiaro…
Inizialmente è stato confusionario anche per me, ci ho messo un po a capire il target del thread. XD

Nel dubbio avevo creato anche uno script per creare ruote dentate non circolari, ma poi non essendo quello l’obbiettivo l’avevo omesso…
NCG 001
… ora sto studiando come applicare l’evolvente correttamente su queste forme, per fare i denti corretti…

4 Mi Piace