Angolo della seconda retta tangente

spero che non mi mandiate a quel paese (anche se vi capirei) :laughing:

a

come si può vedere dalla foto “a” mi ritrovo con questa forma
geometrica ed una linea alla base con le rispettive due tangenze

nella foto “b” invece è il risultato che mi servirebbe ottenere
tramite “calcolo” che si possa replicare in GhPython
oppure tramite un “componente” Gh che lo possa fare…

prove.3dm (2,1 MB)

ho anche postato il file nel caso servisse

in pratica mi servirebbe che dalle prime due “TAN” alla base tramite un calcolo trovare il punto “o”
e da quel punto riuscire a calcolare l’angolo preciso per creare la seconda retta con le seconde “TAN”
lo so che è una cosa più scolastica ho cercato in rete ma ho trovato solo “tangeti esterne due cerchi”
ma non credo che sia idoneo in questo caso. come punto a favore c’è che in questa situazione
abbiamo già indicate le due TAN della prima retta. (non saprei se questo possa bastare . . . .)

preciso che fino adesso usavo il comando “linea tang 2 curve” con un po di fatica riuscivo a trovare le tangenze della seconda linea ma adesso come in questo caso avrei la necessità di farlo come descritto.

un grazie anticipatamente e non “ditemene” tante mi raccomando :slight_smile:

Usa il comando _DimAngle , tocca le due rette e avrai in automatico la quotatura dell’angolo
Vittorio

grazie per la celere risposta Vittorio, ma il fatto e che bisogna lavorare con la situazione della foto “a”

la foto “b” è il risultato finale che mi servirebbe avere

quindi in sostanza manca il punto “o” e l’angolo della seconda retta

Boh prova a usare una cosa del genere
Seleziona gli archi partendo da quello da sinistra e selezionali tutti e 4 andando in senso orario

Sapendo che il disegno è simmetrico… avendo l’arco di destra dei punti snappabili facilmente identificabili (Centro e punto Mediano) puoi utilizzarli per identificare l’asse di specchiaggio.
Vedi immagine allegata.


Praticamente, senza far tanti script o evoluzioni circensi, selezioni la curva tangente iniziale e la specchi dall’altra parte…

ciao Lucio eeee non so come sia capitato ma in effetti se è simmetrico mi sembra strano perchè non
dovrebbe esserlo anche se “a volte” differisce di poco. per questo mi serve quel’equazione.

ovviamente non voglio lo script o cose simili (magari) ma anche indicazioni cosa cercare e su cosa lavorare

sto provando anche il gh che ha postato Nicola1 farò sapere :slight_smile:

grazie dei suggerimenti

Mmmmh… e facendo una retta con l’osnap tangent from e poi cliccando il punto della fine del.secondo arco?
O le forme sono molto diverse da quella che hai postato?
Credo che, prima di fare script o altro, bisognerebbe almeno delimitare la casistica o trovare una procedura funzionante da replicare in gh… altrimenti é come giocare a freccette bendati…

il fatto e che con rhino vorrei non fare operazioni essendo che quella linea alla base che indica i primi due TAN è il risultato del codice di Thomas che avevi postato giorni fa è mi trovo bene perchè mi risolve dei problemi:

uno e che funziona anche su superfici e mi evita di estrarre la curva di contorno “evitando 1000 punti”
due fin’ora usavo “linea TAN 2 curve” ma spesso dovevo ricostruire la curva perchè il comando funzionasse

es. tempo fa avevo “due” lunghezze di un triangolo e dovevo calcolare la terza cercando c’è l’ho fatta.

qui invece mi ritrovo con un “oggetto” la direzione della base con 2 TAN e dovrei trovare altre 2 TAN
e il punto “o”. se con calcoli “un po sopra la norma” bastino oppure bisogna lavorare con i SEN e COS?

EDIT: comunque non tutte le forme hanno archi per questo cercavo una formula matematica/geometrica

PS per Nicola1: mi dici come tornare alle impostazioni di prima

Ciao Salvio

Idea veloce buttata li’ … :wink:

  1. splitti la curva in modo da avere una tangenza per curva
  2. fai un bel loop ruotando le curve fino a che la Y massima sia uguale per tutte e due
  3. quello e’ l’angolo che cerchi
  4. disegni una retta orizzontale tangente ‘superiore’
  5. ruoti indietro il tutto: curve e retta tangente
  6. trovi l’intersezione con la retta ‘bassa’ : punto ‘o’
  7. trovi l’angolo tra le due rette
  8. … buonanotte ! … :smile:

Prova con questo script

Intersezione 2 rette.py (699 Byte)

grazie Emilio e grazie Vittorio adesso provo entrambi suggerimenti spero di riuscirci vi aggiorno

PS qualcuno sa cosa è successo nel mio GH? (foto post precedente)

scusami Vittorio ma io ho provato il tuo script sia in RPython che GhPython
ma mi torna un errore alla riga 2 dove c’è: “import utility as rhutil”
(Runtime error (ImportException): No module named utility)
come si risolve?

EDIT
ho provato ad installarlo adesso il messaggio è questo:
(Message: No module named utility)

ciao Emilio

forse mi mancano qualche tassello per fare ciò, potresti chiarirmi meglio l’idea…

una domanda: dopo aver diviso la curva, la rotazione da quale punto deve partire?

Hehe … hai ragione. Ho buttato giu’ il messaggio un po’ in fretta. :slight_smile:

Dire che fa lo stesso.
Basta che tu usi sempre lo stesso punto, in modo che la retta ‘superiore’ torni poi al posto giusto.

Oppure se vogliamo, non spostiamo niente, ma lavoriamo con delle boundingbox incilnate.
Ho visto che rs.BoundingBox() permette di usare un piano a scelta e di ottenere la box allineata al piano ruotato, volendo.

In questo caso,nel loop variamo l’inclinazione del piano di riferimento, e chiediamo di ottenere le box in coordinate del piano ruotato.
Quando le boundingbox dei due ‘pezzi’ di curva hanno la stessa Y massima, abbaimo trovato il nostro angolo.

Sono due modi per ottenere lo stesso risultato:
l’idea e’ semplicemente questa:
in un riferimento parallelo alla retta cercata, le due curve hanno la stessa Y massima.

Poi il modo in cui troviamo l’angolo e disegniamo la retta puo’ variare …


Ah … forse te ne sei gia’ accorto … Vittorio ha postato il testo di rs.LIneLIneIntersection()
Penso volesse ricordarti che, per l’intersezione delle rette, puoi usare quella funzione nel tuo script.

questa cosa me ne ero accorto pure io infatti il problema iniziale era come trovare il piano giusto per entrambi i lati e questo come ho già spiegato usavo “linea TAN 2 curve" e da li mettevo in piano prima un lato e lanciavo il comando BoundingBox poi facevo la stessa cosa per l’altro lato tutto questo in rhino.

adesso con il codice di Thomas avevo il vantaggio che comunque vada un piano e 2 TAN lo trovavo sicuro
ma non sapevo come poi trovare il piano “perfetto” per l’altro lato.

mentre tu invece dici di far ruotare il BoundingBox in Python ed a ogni rotazione lui ricostruisce il box

in effetti pensandoci dimmi se ho capito bene essendo potrebbe salvarmi dal tradurre il codice di Thomas

se uso questo metodo della rotazione rs.BoundingBox() in Python con qualsiasi forma simile o facsimile
a quella da me postata dovrei ottenere un TAN per 3 lati e 2 TAN per il lato che mi serve e la stessa cosa ruotando di circa 180° anche dall’altro lato e potrei anche filtrare i TAN che hanno la stessa coordinata Y

spero di aver capito bene quello che dici e chiedo conferma di ciò che ho spiegato
perchè in prati comunque giri il box gli unici due versi che possono avere la stessa Y è quando sono
Tangenti è tutto questo lo posso fare anche senza aver trovato i primi due TAN con l’asse di base giusto?

adesso mi metto a lavoro e di sicuro farò sapere presto come vanno i lavori nel frattempo se ci sono errori nel mio ragionamento correggimi prima possibile se no mi troverò la testa rotta a furia di sbatterla contro il muro
ahahahah :slight_smile:

PS l’ho provata la funzione di Vittorio ma infatti gli ho risposto mi da un errore di modulo "utility"
ho continuato a cercare in rete ne ho scaricati due dal sito ma non mi funziona comunque non so come fare.

Esatto … l’idea era questa … :slight_smile:

… Non mi sono spiegato.
Vittorio ha semplicemente postato il codice di rhinoscriptsyntax.LineLineIntersection().
Se la vuoi usare basta che scrivi nel tuo script, ad esempio …

import rhinoscripsyntax as rs
# . . .
punti = rs.LineLineIntersection( retta_1, retta_2 )
# . . .

… come hai sempre fatto.
Non c’e’ niente di nuovo. e’ solo una delle tante funzioni rhinoscriptsyntax che possiamo usare ogni volta che vogliamo … :slight_smile:

E in effetti a me quello di Vittorio sembra un ottimo suggerimento: dato che a LineLineIntersection() puoi passare due punti per rappresentare la linea, se tu trovi le buondingbox di cui si diceva prima, puoi usare direttamente i vertici della boundingbox per calcolare il punto di intersezione delle rette.

adesso è chiaro ok grazie :slight_smile:

caro @emilio adesso capisco perchè quando davo pochi dettagli non eri “contento”

qui per passare da un linguaggio ad un altro bisogna prima far passare due scariche di corrente in testa

cosi si resetta il cervello qui solo per gli “indici” (in python non so come si chiamino) vado al manicomio

chiedo venia mi sa che a volte dò troppe cose per scontate. vabbè cercheremo di migliorarci :slight_smile:

Tranquillo, Salvio … :grinning:

Passiamo da queste parti (virtuali) non solo per chiedere consigil, ma anche per divertimento …
… Ed e’ proprio quello che facciamo. :slight_smile:

Almeno per questioni riguardanti script & GH (ma direi spesso anche per i normail comandi Rhino) di solito chi ci si cimenta si diverte anche.
… Prova a obbilgare qualcuno non interessato a scrivere uno script o una definizione … se scappi in fretta e’ meglio. :smile:

Ad esempio, ti linko un messaggio che ho letto oggi sul forum USA … e ci ho fatto una sonora risata …

Tra l’altro, l’impressione e’ che in quella discussione si siano divertiti un sacco tutti quanti. :smile:

Parlando in generale, credo che Grasshopper sia fondamentale nell’aumentare il ivello di divertimento in ambiente Rhino … ( e quindi il successo di Rhino, almeno in ambienti dove al piacere di fare le cose si da’ ancora il giusto peso )

Poi per capirsi bisogna essere in due …
Se tu a volte dai poche informazioni …
io, sempre, sono piuttosto ‘di coccio’ … :smile: … e troppo abituato a fare le cose a modo mio, per cui fatico
a capire il problema se e’ stato impostato in un modo un po’ diverso da come lo vedrei io …

Non importa, se non ci capiamo al primo o al secondo messaggio … ci sono sempre il terzo, il quarto, ecc. :grinning:

Spesso per fortuna, a un certo punto arriva Lucio a … metter ordine nel casino che abbiamo combinato … :smile:

Ciao !

EDIT:

Se parli di elementi di array / liste: si chiamano sempre ‘indici’ ( come in tutti i linguaggi in cui ho ficcato il naso ) :slight_smile:

EDIT_2:

Hai provato la definizione di Nicola ? ( E’ l’unico che ha postato uno strumento gia’ pronto :slight_smile: )

ahahahah ebbe di certo incide ahahahah

si ho letto delle liste e ho letto anche delle stringhe non so se c’è anche in VbScript questa differenza
però mi credi da quando sto usando GhPython è un casino, quando ho dei dubbi su come funziona un comando vado a vedere cosa ho reaizzato in VbScript per portarlo in Python e poi lo trasporto in GhPython

quindi un pochino ti sto capendo quando chiedevo le cose su VbScript e tu da Python dovevi convertirle

PS non sei solo, anche io tendo a vedere e fare le cose dal mio punto di vista ed è vero che poi è faticoso comprendere un’altra prospettiva alla quale non si è abituati a ragionare e questo mio thread è un esempio grazie al tuo ragionamento su come risolverlo. l’importante è non essere chiusi mentalmente giusto :slight_smile:

CIT: per questo sono sempre più convinto che il dialogo è confrontarsi con gli altri sia la cosa migliore.

comunque sto lavorando su come impostare la rotazione del piano e mi è venuto un dubbio:
ma se ruoto di 1° per volta ci possono essere dei decimali centesimali ecc che possono dare un risultato diverso, nel caso come impostare la rotazione? è un dubbio giustificato o non implica nulla?