Combaciare dominio curve

Scusa Riccardo …

Premesso che concordo con te che una zona di sovrapposizione si puo’ ottenere solo in casi particolari …

Il grafico che mostri e’ quello della curvatura ?
Se e’ cosi’ a me sembra di vedere continuita’ di curvatura, anche se non e’ continua la variazione di curvatura … o sto facendo confusione ? :confused:

Grazie :slight_smile:

1 Mi Piace

ciao Riccardo, cosa intendi con avere una tolleranza, nel senso come faccio a ricavare questa situazione?
intendi tipo: “intersezione apparente di Rhino”?

Intendevo che forse se abbassi la tolleranza globale, l’intersezione di rhino troverà qualche segmento/curva, anche se l’intersezione corretta dovrebbe essere solo un punto.
È solo una supposizone, non ho provato.

È difficile seguirti. Se dicessi chiaro e tondo cosa vuoi ottenere potremmo andare meno alla cieca e sarebbe più facile un po tutto… :slightly_smiling_face:

1 Mi Piace

mi spiace che sorge questo problema, ovviamente qualsiasi dubbio mi si può chiedere e chiarisco meglio.

ho provato abbassando la tolleranza sia in Rh che Gh ma purtroppo come supponevi non ha funzionato.

comunque mi hai fatto venire un’idea che voglio provare subito, appena posso condivido i risultati :+1:

ho fatto alcune prove tra cui questa:
ho aggiunto il componente CCX di Riccardo che ha realizzato nella def postata in un 3d precedente,
alla def di Emilio di questo 3d, e come già suggerito collegare Galapagos all’angolo di errore e agli slider.

nel video dopo aver superando il minuto, nel componente CCX si può notare che si crea un dominio
ovviamente in questo caso lo scopo di Galapagos è quello di trovare l’angolo di errore minore

se ci fosse un metodo per poter calcolare “avvicinamento” alla creazione del dominio nel CCX
sarebbe un gran passo in avanti. per lo meno fino ad un’altra eventuale soluzione migliore. . . .

Scusa Salvio, suggerito dove ? Da chi ? :slight_smile: … mi perdo. :confused:
Se lo scopo di Galapagos e’ minimizzare l’angolo di errore, mi sembra molto meglio utilizzare la definizione mirror.gh di Riccardo, che porta l’errore praticamente a zero istantaneamente.

Anche a me sembra una buona idea, almeno come esperimento, per vedere, nella configurazione trovata dalla def mirror.gh, se c’e’ modo di ottenere una zona di sovrapposizione cambiando la tolleranza.

… Pero’ non ci riesco … :unamused:
Ho provato a inserire il componente CCX in mirror.gh.
Ho anche provato a separare la tolleranza di overlap da quella per le intersezioni puntiformi, in modo da poterla regolare da slider.
Ho pure provato a portar fuori dallo script C# tutti i dati dell’intersezione, per poter controllare meglio cosa succede …
Ma non riesco a ottenere delle zone di overlap, o almeno non quelle che stiamo cercando.
Variando la tolleranza succede un po’ di tutto … :wink:
Punti e zone di overlap che vanno e vengono, o ricavo zone strane …

Forse sto facendo cavolate io … non so, probabile … :confused: :confused: :confused:

mirror-modif.gh (30,4 KB)

  private void RunScript(Curve A, Curve B, double tov, ref object parameterA, ref object parameterB, ref object intervalA, ref object intervalB, ref object pcount, ref object ocount)
  {
    double t = this.RhinoDocument.ModelAbsoluteTolerance;
    Rhino.Geometry.Intersect.CurveIntersections ints = Rhino.Geometry.Intersect.Intersection.CurveCurve(A, B, t, tov);
    List<double> parametersA = new List<double>();
    List<Interval> intervalsA = new List<Interval>();
    List<double> parametersB = new List<double>();
    List<Interval> intervalsB = new List<Interval>();
    int pcnt = 0, ocnt = 0;
    foreach(Rhino.Geometry.Intersect.IntersectionEvent ie in ints){
      if(ie.IsPoint)
      { pcnt++;
        parametersA.Add(ie.ParameterA);
        parametersB.Add(ie.ParameterB); }
      if(ie.IsOverlap)
      { ocnt++;
        intervalsA.Add(ie.OverlapA);
        intervalsB.Add(ie.OverlapB); }
    }

    parameterA = parametersA;
    intervalA = intervalsA;
    parameterB = parametersB;
    intervalB = intervalsB;
    pcount = pcnt;
    ocount = ocnt;
  }

Scusa Riccardo, tu per caso a prima vista vedi qualcosa che non va ?
Grazie

EDIT

… qualcosa che non va a parte lo strano modo di ricavare la lunghezze delle liste, intendo …
:roll_eyes: :grinning_face_with_smiling_eyes:

1 Mi Piace

No. È tutto corretto.
Credo che semplicemente stiamo cercando di ottenere una ciambella usando lo stampino per i biscotti a stellina.
Non ho idea di quale sia la matematica in specifico in background (come sempre…).
Rhino trova l’intersezione corretta nel 99% dei casi, e a diversi valori di tolleranza… e noi crediamo che quando rhino sbaglia, trovando un overlap, ciò possa essere un risultato giusto.
Non so, credo che tutto il discorso sia ancora troppo vago/nebuloso… non ho idea di cosa stiamo facendo.


mirror-modif 2.gh (25,4 KB)


qui ho cercato di isolare solo le porzioni di curva interessate… cambia poco o niente…

2 Mi Piace

in una mia risposta, dicevo che per usare Galapagos con la tua def bastava soltanto collegarlo agli slider

con la def di Riccardo avevo un dubbio: selezionando EstendiCruva non mi ritrovo con due rette
andando a verificare i punti che formano la V e tracciando una retta la direzione non combacia
(non so se sia normale questo, oppure ho mosso qualcosa male)

che hai fatto varie prove con pochi risultati positivi, mi scoraggia un po,
perché anch’io le sto facendo, ma se con le vostre conoscenze è complicato, per me è impossibile mi sa.

eeee anch’io su questo, riflettendo mi è venuto il dubbio, essendo che nella foto che ho postato:
si vedono i due overlap nelle zone centrali dei due estremi sup/inf, ma solo perché e li che li ho trovati
in pratica quella sovrapposizione è l’unica che ho ottenuto, spostando e ruotando manualmente in Rh
ma non’é detto che debba essere per forza nelle parti estreme della curva. infatti riguardando il primo messaggio del 3d, nella seconda foto ci sono due curve rosse per indicare +/- il dominio da lavorare

1 Mi Piace

Gia’ … sembra una buona ipotesi. :slight_smile:

Ho fatto una prova direttamente su Rhino con 2 quadrati, impostando la tolleranza a 0.5 mm.
Se sono allineati (stessa Y), Rhino trova due linee come intersezione

image

Ma se ne uno lo sposto in Y di 0.01, trova solo piu punti … anche dove non si toccano …

… zoomando …

Forse nel comando c’e’ una logica che privilegia i punti rispetto alle curve di overlap … almeno oltre una certa tolleranza …
OK, sono solo supposizioni parecchio confuse. Meglio fermarsi.

Ai fini pratici penso che se cerchiamo zone di sovrapposizione con tolleranze un po’ alte sia meglio fare gli offset delle curve e trovare le sovrapposizioni a mano trimmando/intersecando, almeno su Rhino.
( Ma certo chi conosce GH riesce a farlo anche con quello. )

Vero.
Mi era venuta la curiosita’ di vedere come funziona (se funziona) la ricerca delle sovrapposizioni …
Pare non sia stata una grande idea. :wink:

Grazie !

Allora mi sa che siamo sempre al punto di partenza …
Ma almeno la curva in questione e’ quella che hai mostrato o puo’ essere diversa ? :wink:

Perche’ non conoscendo la logica dietro al problema si va a tentoni …

Per ora l’unica cosa che credo di aver capito e’ che l’intersezione curva-curva di Rhino le sovrapposizioni ‘lasche’ non te le trova direttamente. :confused:
Bisogna ricavarle in altro modo.

1 Mi Piace

Mi sa che è un compromesso …

… molto vero :joy: :rofl:

fa46b00f3896c14f3f5b90330e81ba9582bd49a7_2_690x261

scusa Riccardo una domanda: ma la modifica che hai fatto nella tua def cosa comporta?

mmmm e questo sarebbe un bel problema se non ci fosse modo di regolare le tolleranze. . . .

quindi anche se le overlaps non sono per forza nelle parti estreme, il problema rimane comunque :thinking:

la figura non’é propriamente quella in questione, anche perché non si tratta di una sola
ho preso spunto da un curvilinee di plastica, che ha le caratteristiche giuste come esempio:

(a volte mi è stato chiesto di trovare il risultato di una def in Gh prima sul foglio e poi replicarlo in Gh)
in questo caso è facilmente replicabile, con un curvilinee si traccia il contorno su un foglio di carta
specchio il curvilinee e faccio combaciare le due curvature estreme con quelle opposte disegnate (foto)
si traccia di nuovo il contorno del curvilinee specchiato per trovarsi le overlaps nelle zone indicate “gialle”

ovviamente facendo questa procedura con matita su un foglio manualmente trovo le overlaps o presunte
infatti ho postato la domanda in BAR non sapendo se sia possibile ottenere il risultato richiesto in Rh/Gh

io pensavo ad un approccio del tipo scorrimento/rotazione nei domini indicati in rosso e bianco, non so
fino a che punto può essere valida, ma se si ipotizza l’assenza di tolleranza diventa proprio complessa.

EDIT:
vedendo il video che ho postato, col CCX di Riccardo con certi parametri le overlaps vengono torvate,
quindi credevo che si era sulla giusta strada. davvero non’é possibile calcolarsi una propria tolleranza?

Ciao Salvio

Come accennavo sopra, secondo me il modo c’e’: fai 2 offset di una curva a distanza tolleranza.
Le parti dell’altra curva comprese tra le 2 curve di offset individuano le zone di ‘sovrapposizione’.

Mah … se non c’e’ nessun vincolo iniziale temo che tocchi provare ‘a forza bruta’ :wink: , come si diceva qualche giorno fa.
In pratica cercare per ogni angolo di rotazione tra le 2 curve, e per questo angolo cercare tutte le posizioni possibili … piu’ o meno.
( Con Galapagos o con dei classici loop, non so cosa sia piu’ veloce … )
A meno di trovare qualche strategia piu’ intelligente … io ovviamente non ho idee. :confused:
Certo dipende anche da quanto affiniamo la ricerca, per esempio parlando di rotazione, che passo usiamo nel loop su 360 gradi.
E’ anche possibile fare una prima ricerca ‘grossolana’ e poi affinare il risultato nelle vicinanze dei punti trovati.
Come sempre con gli algoritmi il limite e’ la fantasia …

… Io non ho ancora nemmeno capito se tu stai cercando esattamente 2 sovrapposizioni o se il numero puo’ variare e conta la lunghezza totale … o cos’altro.

:confused:

Si’, e’ capitato anche a me.
A volte si trova qualcosa, a volte no, a volte zone farlocche …
Purtroppo non capisco la logica che c’e’ dietro. :unamused:

Vi suggerisco di ricercare i punti della curva (distinti!) secondo la definizione di hausdorff distance
ovvero ricercare tutte le coppie di punti (A e B) appartenenti alla curva tale che la retta A-B risulti
ortogonale alla curva sia nel punto A e sia nel punto B.

PS: evitiamo i cerchi … :joy: :joy: :rofl:

4 Mi Piace

ciao Emilio, e grazie per la risposta

mi potresti chiarire meglio ciò che hai spiegato, questa volta sono io che non ho compreso :exploding_head:

se mi spieghi con forza bruta cosa intendi. . . . prendo a pugni il pc :rofl: :rofl:

in questo caso per lo scorrimento chissà se la definizione fatta da Riccardo “crazy” possa essere utile,
essendo che quando ruoto la curva specchiata ovviamente mi ritrovo che si interseca, mentre invece
dovrebbe appunto “scorrere” quindi ruotare senza superare la delimitazione della curva originaria.

sto cercando solo le due overlaps estreme della curva, come indicato in giallo nella foto, ovviamente “ipotizzo” maggiore sia la lunghezza/dominio trovata delle due overlaps e maggiore sarà la precisione?

Hehe … temo di si’ invece.
Tu avevi capito cosa chiedeva Salvio … io avevo ‘capito’ tutta un’altra cosa …
:grinning_face_with_smiling_eyes:

comparando la foto iniziale e quella finale a parte l’inclinazione non mi sembrano tanto defferenti anzi. . . .
poi che cercavo le “SubCrv” come risultato l’ho avevo precisato anche in più risposte comunque,
ragazzi ripeto mi spiace che la discussione non’é stata chiara (mi cospargo di ceneri il capo)

L’ho detto appena dopo:

EDIT
In generale la ricerca a forza bruta significa provare tutte le possibilita’ … di solito perche’ non si sa dove sbattere la testa. :wink:
/ EDIT

La precisione di cosa ? :slight_smile:

… Se lo trovi un buono shampoo …
:wink:

Vero.
… Ci ho solo messo qualche giorno a capirlo … e che sara’ mai …
:wink: :grinning_face_with_smiling_eyes:

1 Mi Piace

aaaa quindi senza saperlo ho sempre usato il metodo a forza bruta :rofl: :rofl:

eeee capirai Emilio, per quei pochi rimasti basta anche solo un pò d’acqua ahahahah

dai facciamoci una risata che in questo periodo ci vuole per stemperare un po tutto

non mi dire nulla ma quanto spiegato senza nessuna immagine non riesco ad elaborare il da farsi

intendevo la precisione delle overlaps o sbaglio?

per la foto che hai postato mi è chiara, ma non comprendo questo metodo come trovo le overlaps?
dovrei ruotare il mirror per poi come dirgli quando il risultato è quello giusto?