Catena di Pappo

l’altro 3d sui cerchi mi ha fatto ritornare in mente una domanda che volevo fare tempo fa. . . .

sarebbe possibile automatizzare questa procedura con uno script oppure una def Gh:

Annotazione 2023-01-04 220207

in pratica un cerchio con tangenza su due curve
l’automazione che richiedo sarebbe quella che
trovi il punto giusto ritornando il cerchio con il
raggio più piccolo possibile. . . ?

Spero che altri piu’ perspicaci di me capiscano cosa stai chiedendo … :slight_smile: :confused:

Vediamo se ho capito.
pappo.gh (18,0 KB)
img1

4 Mi Piace

ottimo Leopoldo, hai replicato proprio come nell’immagine. grande :+1:

se la parte che va a chiudere non’é ad imbuto, ma invece fosse un raccordo che unisce entrambe le curve?

ps da considerare che sarebbe sempre una sola curva unita, che dici bisognerebbe spezzarla oppure no?

(per recuperare solo il cerchio con il raggio minore faccio semplicemente un sort del raggio stesso giusto?)

edit: ok all’output D0 dell’ultimo LoopEnd mi ritrovo il cerchio più piccolo :+1:

Vanno considerati i due archi principali.
pappo a.gh (14,5 KB)

img2
img1

1 Mi Piace

ciao Leopoldo, ho notato che nella prima foto ultimo post le curve sono divise
ed il cerchio più piccolo li va a “chiudere” per cosi dire e funziona :+1:

se nel caso la curva fosse unica, avevo ipotizzato questa soluzione (che però non funziona)

dalla curva unita, vado a creare 2 subcrv (rossa e gialla)

come si deve dalla foto con la def, l’intento era quella che tramite i punti parametri delle 2 subcrv mi recuperavo le 2 tengenze ed incrociandole trovavo il punto che serviva come 3° parametro per il cerchio

volevo un vostro parere su questo mio ragionamento se c’é qualcosa di buono oppure sia da cestinare
e nel caso quale siano i pro/contro in pratica il cerchio da trovare sarebbe quello che ha la maggiore angolazione tra le due tangenze quindi di conseguenza un minor raggio del cerchio (corretto :thinking: ?)
rimanendo tangente alle due subcrv e all’interno della curvatura (non uscire fuori dalla curva madre)

usando il componente 3tan avevo dato come parametri le 2 subcrv e la curva madre
poi un punto che spostavo col mouse in Rh ma nemmeno questa soluzione ha funzionato

quindi per questo mi stavo chiedendo se queste mie due soluzioni fossero errate
oppure potrebbero anche funzionare ma con aggiunta di qualche formula/equazioni?

posto la def con e varie mie prove fatte: circle2.gh (17,3 KB)

foto sopra è quello che vorrei ottenere in automatico
come si vede dalla curva unità, avvio comando cerchio su tangenza
mi prendo i punti laterali della curva (rossi) e scendo col punto (giallo)
fino ad arrivare il più vicino possibile bordo (turchese) della stessa curva

il problema e che oltre a non saperlo far fare in automatico
con questa prova se scendo ancora col punto della freccia
gialla il comando si annulla, se è quello il punto massimo
(di raggio minimo) che posso ottenere, come si potrebbe
automatizzare in modo che mi dia sempre lo stesso punto?

essendo che se ripeto 100 volte il comando cerchio per tangenze
in Rh mi risultato complicato trovare sempre lo stesso punto. . .

spero di essermi spiegato per lo meno alla meglio :smiling_face:

ps ho notato che forse il cerchio per tangenze in Gh è più preciso del comando in Rh?

In questo caso il cerchio può essere tangente per uno o due punti:ma non per tre.
Per trovare il cerchio è sufficiente selezionare il punto tangente desiderato e utilizzare il comando Curvature.
circle2 a.gh (25,9 KB)

ahahahah con un po di ritardo ma alla fine ero arrivato alla stessa conclusione. . . :wink:

edit:
ma come mai in altre occasioni anche avendo la parte finale quasi simile a questa
in Rh riesco a trovare il terzo punto per la tangenza? cosa manca alla suddetta curva?

ps si potrebbe utilizzare qualche espressioni per ottenere il risultato avuto con Galapagos?

pps un dubbio, però usando la curvatura posso estrarre il cerchio avendo il raggio minore
ma poi non’è certo che abbia la tangenza con i lati della curva giusto?
nel senso il cerchio trovato potrebbe uscire dalla curva?

1 Mi Piace

Probabilmente riesci a trovare il terzo punto in funzione della tolleranza più o meno alta.
Il punto è in posizione corretta quando il cerchio interseca la curva in un solo punto.
Con Galapagos dovrebbe essere semplice.
Comunque è opportuno fissare un minimo e un massimo sullo slider.

1 Mi Piace

qui intendevo in Rhino, usando il comando cerchio con tangenze

una intersezione ottima soluzione Leopoldo, ma mi sa che siamo usciti (io in primis) dallo scopo iniziale

dobbiamo fare riferimento a questa foto, dove ho usato il comando in Rhino

in questop caso il cerchio “ha” la tangenza sui due bordi laterali
(è questa deve essere la prima condizione)

la seconda invece sarebbe quella di trovare il terzo punto che come dicevo prima a volte ci riesco,
oppure se non si trova il terzo punto, riuscire a trovare il punto più vicino al terzo punto/bordo

osservando la foto, se il punto indicato dalla freccia gialla è il punto massimo che si possa ottenere
se no il comando poi salta, allora mi deve dare quel punto, ma sempre mantenendo le due tangenze.

Ma il raggio del cerchio deve essere stabilito in precedenza?
Comunque provo così.
circle2 b.gh (10,6 KB)

ok grazie vado a provare subito la tua def :+1:

anche sta volta secondo :wink:

no, basta che il cerchio mantenga le due tangenze e se non trova il terzo punto abbia la distanza minima.

circle3.gh (14,9 KB)

io ho provato in questo modo, se puoi dargli un’occhiata e dirmi cosa ne pensi,
non sono sicuro che il risultato, sembra più che faccia una sovrapposizione. . .

(ho trovato il codice C# nell’altro forum)

Bisogna comunque verificare se il cerchio intersechi o sia tangente alla curva.
Ma è proprio necessario che il cerchio sia tangente a due punti?
Secondo me non va bene spezzettare le curve.
Può anche darsi che sia solo la rappresentazione grafica ma a me risulta questo.
img1

che il cerchio abbia le due tangenze si

che si debbano spezzettare le curve, anche a me non piace, ma poi il codice C# non funziona. . .

(ma alla fine è una spezzettatura “fittizia” essendo che come si sposta il cerchio si spezza sempre dove si verifica intersezione, quindi si mantiene sempre la tangenza con entrambe le curve. . .)

ps ma la tua def come funziona, che mi sfugge il ragionamento. quel componente biArc cosa fa?

Ciao Salvio, in questo caso le due circonferenze “binario” non sono tangenti e non è più una catena di Pappo ma di Steiner … Prova a dargli un occhio.

1 Mi Piace

Bello Lepoldo! :smiling_face_with_three_hearts:

Biarc disegna un arco tangente alla curva utilizzando due punti della curva stessa, quindi con Decontruct si può trovare il centro del cerchio tangente ai due punti in questione.
In realtà vengono prodotti 2 due archi ma in questo caso ne serve uno solo.
La mia definizione era costruita per ottenere un punto di tangenza e quindi se si vogliono utilizzare i due punti è sempre necessario verificare che Il cerchio risultante sia tangente e non intersecante con la curva.
img2

Tornando alla tua definizione.
Ingrandendo l’immagine si vede bene che la linea gialla (cerchio) interseca la linea nera (curva).
Sempre tenendo conto di un eventuale errore di visualizzazione.

1 Mi Piace

Comincio a pensare che una soluzione non ci sia.
circle4.gh (9,9 KB)

era proprio questo, il dubbio che mi porto dietro da molto tempo. . .

@leopoldomonzani ieri come ultima prova fatta mi sono indirizzato verso questo approccio:

circle5.gh (16,5 KB)

anche se a volte da questo errore:

“sembra che il risultato sia coerente ma non ne sono sicuro”

nota dolente che per quanto inizialmente ero un fan di Galapagos
ma ho notato che in genere per ciò che mi serve fare non’é proprio adatto
l’ideale sarebbe una equazione che riporti direttamente il risultato finale.

Proviamo anche questa, mi sembra un buon risultato sempre tenendo conto che la curva spezzata non sia proprio il massimo.
circle5 a.gh (9,9 KB)