Combaciare dominio curve

partendo dalla curva realizzata nella foto a Sx, specchiandola cerco di far combaciare maggiormente i due estremi di curvatura Sup/Inf cercando di ottenere due SubCrv con la maggiore lunghezza/coincidenza

come immaginavo è molto contorto trovare la soluzione tra le varie combinazioni usando mirror e rotate
esiste un metodo geometrico/matematico per arrivare alla soluzione? o come procedereste voi?

Beh … ovviamente di script. :grinning_face_with_smiling_eyes:
Proverei a trovare una boundingbox orientata in modo che le intersezioni alta e bassa tra bbox e curva definiscano una retta parallela al lato della bbox.
Per cui farei una semplice ricerca a forza bruta :wink: con dei loop.
Se vuoi usare GH, vedi tu come fare che io adesso sono piuttosto confuso …

… Se non ho capito male il problema.

ciao Emilio,

Gh a parte, l’ideale dovrebbe andare tutto in pasto a Galapagos

se ho compreso il tuo suggerimento, creo una bbox e trovo le intersezioni supe/inf con la curva
per poi tracciare la linea di specchiatura? non so se sia fattibile in tutte le situazioni, essendo che
la curva può essere ruotata anche in altri modi, a meno che mi sfugge “la ricerca a forza bruta di loop”?

a chi lo dici, sono stato alcuni giorni a pensarci prima di decidermi di iniziare :sob:

… Mi sembra uno spreco di calcoli … ma se vuoi ovviamente …

Piu’ che altro cerchi la bbox con la giusta inclinazione.
Se posti la curva possiamo ragionare su uno schizzo …

E’ solo per dire che non conosco una soluzione diretta, quindi mi accontento di usare un loop per cercare l’inclinazione della bbox, cioe’ cercherei una soluzione per via numerica e non analitica …
o una cosa del genere … :wink:

Pero’ hai ragione, non e’ un modo di dire adatto a questo problema.
‘Forza bruta’ di solito si dice quando non si sa nemmeno dove cercare la soluzione e quindi si fanno un mucchio di tentativi … in pratica i problemi che tratta Galapagos.

Qui una soluzione approssimata si trova facilmente a mano.
Poi resta solo da affinarla con un loop o simili …
(Sempre se non mi sbaglio)

Soluzione per niente automatica …

salvio-8.gh (16,4 KB)

Decidi tu gli angoli di ricerca minimo e massimo per l’inclinazione della bbox.
Poi col primo slider in alto ti sposti nell’intervallo definito dagli angoli minimo e massimo,
cercando di ridurre al minimo l’angolo di errore risultante.
Poi per affinare la ricerca puoi editare gli angoli minimo e massino in modo da ridurre l’intervallo di test.
… E cosi’ via …
Quando il risultato ti va bene, cuoci la linea di mirror.

Non avendo la tua curva, ho provato con una curva diversa.
Spero che funzioni anche con la tua.

In ogni caso lascio a chi e’ capace ricavare una soluzione automatica. :slight_smile:

2 Mi Piace

Niente di automatico, ma questo script traccia il grafico dell’errore e lo auto-interseca per trovare la soluzione.
mirror.gh (16,8 KB)
Il concetto di base è simile a quello di emilio.

2 Mi Piace

ragazzi lo so che mi direte che non’é così, ma per me potreste lavorare anche per la N A S A :wink:

detto questo, mi sono preso un pochino di tempo per ragionare meglio sulle definizioni postate, e se ho compreso bene la finalità di entrambe le definizioni, è quella di calcolare le differenze di angolazioni
nelle due soluzioni anche se diverse, credo che il fulcro del funzionamento sia nella parte iniziale

ps unica cosa, in entrambe le definizioni, il risultato sono sempre punti come intersezioni?

l’intento finale dovrebbe essere quello che dopo aver sovrapposto entrambi gli estremi delle “Curvature”,
è quello di ricavare due subcurve con la maggior porzione della curva originaria con quella specchiata.

spero di aver precisato meglio la questione, essendo che io riesco ad ottenere solo punti con le def postate
(quanto precisato sopra spero sia +/- fattibile)

mirror 2.gh (23,9 KB)
… tipo così?

Ciao Salvio

Riccardo ha gia’ postato la soluzione completa, quindi sei a posto. :grinning:

Ma, per curiosita’, avevi fatto quanto dicevo sopra ?

Non funziona ? :slight_smile:

Ciao Emilio

non usando GH mi fido delle vostre soluzioni. :smiley:
Il risultato del calcolo non sono 2 punti? Al più si ottengono piccole porzioni di
curva nell’intorno dei rispettivi punti determinate dalla tolleranza imposta …

Sergio

2 Mi Piace

ciao Emilio, si avevo tracciato la linea mirror ma il risultato non era quello auspicato, ho anche visualizzato la seconda def di Riccardo, per spiegarmi meglio sono riuscito manualmente ad ottenere una foto del risultato:

ecco questo dovrebbe essere (approssimativamente) il risultato che intendevo nella spiegazione
una determinata sovrapposizione della curva originaria con quella specchiata mi deve far ottenere
quelle due intersezioni di subcrv sup/inf (indicate dalle frecce) cercando la maggiore lunghezza/dominio

ciao Sergio, si come la foto appena postata è proprio quello l’intento, per questo avevo chiesto se il risultato fossero solo “punti d’intersezione” nelle def postate, essendo che io non riesco ad ottenere le porzioni di curva

Ciao Sergio

La mia idea era:
tasto destro sul componente ‘Ln’, selezioni ‘Bake’ e dovresti ottenere la linea per il mirror …

Ma ovviamente posso aver cannato la cosa … :blush:

Ciao Salvio

Mi spiace …

Ho provato adesso a ricostruire la tua curva dall’immagine originale.
A me viene una curva di grado 6 e con la definizione ho trovato (con parecchia fatica … si’, la definizione e’ scomodissima :blush:) un angolo di circa 2.06 gradi
Qui, cuocendo la linea di mirror e trimmando e specchiando la curva ottengo questo:

veramente Emilio, io essendo un fraccomodone ho provato ad automatizzare la tua definizione,
mi è bastato collegare i tre slider ed il risultato finale (angolo di errore) a Galapagos e fa tutto lui.
sembra che funzioni nel trovare il minimo grado di errore, ma come già detto il risultato non era quello

si ho notato anch’io, era l’indicazione per crearla poi ovviamente Rhino in base al numero punti la cambia.

Certo che no! :joy: :joy: :rofl:
Mi ero fermato ai due punti … poi tu sei andato oltre.

Spiacente … qui non so dirti proprio niente !
:grinning_face_with_smiling_eyes:

Vedo che ti stai impratichendo dell’insetto …
Bravo Sergio ! :grinning:

… Cosi’ poi posso chiedere anche a te.
:grinning:

Eh, infatti. Sì.

Non avevo mai capito questa cosa.
È impossibile.
Dato l’andamento della curvatura crescente/decrescente, una sovrapposizione con una sua copia specchiata avrà come intersezione solo e solamente punti, non porzioni di curva. O perlomeno, questo nella teoria. Se ti va bene avere una tolleranza, rhino una qualche sovrapposizione la troverà, ma io personalmente la considererei errata per principio.
Potresti avere sovrapposizioni corrette solo nel caso di parti di curva con curvatura costante: segmenti circolari, archi.

2021-10-08 13_47_14-210929 003.3dm (389 MB) - Rhino 7 Commerciale - Superiore
C’è continuità di tangenza, ma non di curvatura.
C’è continuità di curvatura, ma la curvatura non è costante (grazie @emilio ), e quindi appena oltre l’intersezione le due curve divergono una dall’altra.
Servirebbe che i grafici di curvatura fossero tangenti tra loro per un tratto… vabbè ci siam capiti :sweat_smile:

1 Mi Piace

Ah, ecco …
Nemmeno io. :confused:

Ma mi capita spesso, purtroppo, di equivocare le richieste di Salvio … :wink:

basta collegare ciò che ho evidenziato sono 4 spaghetti Emilio :wink:

:grimacing: :grimacing:

era quello che temevo
infatti inizialmente mi stavo barcamenando in tutt’altre soluzioni ma con risultati un bel pò discutibili
infatti la sovrapposizione ottenuta nella foto non’é bastato solo il mirror ma anche spostare/adattare

:pray:

1 Mi Piace