Il Bar dell'Ingegneria

D'accordo: raccordiamoci

« Older   Newer »
 
  Share  
.
  1.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Nei mesi scorsi ho sviluppano alcune applicazioni in VBA di autocad che disegnano il profilo longitudinale di una polilinea 3d comprensive delle finche a scelta. Sollecitato poi dai colleghi ho esteso l'applicazione consentendo il disegno di un profilo attraverso sezione con un asse di un piano a curve di livello, in cui l'asse sezionante viene disegnato a video nel corso della esecuzione dell'applicazione.
    Questi piccoli applicativi hanno agevolato di parecchio il lavoro dei colleghi potendo essi con un paio di clik produrre un profilo/sezione, fare le loro valutazioni, far disegnare un secondo profilo con variazioni al primo e rifare valutazioni, il tutto in pochi secondi.
    Ma i colleghi sono ingordi, non gli basta che la sezionante sia un segmento, ma vogliono che possa essere anche una polilinea e poi anche una polilinea mista. Penso che tutto sia finalizzato allo studio preliminare di un tracciato stradale ma anche nel campo idraulico al tracciato del profili di una condotta o di un canale.
    ---
    Ebbene dato che starò qualche giorno in convalescenza, ho pensato di iniziare a sfruculiare le questioni dei raccordi di una poligonale. Per adesso non voglio appensantirmi e quindi penso ai raccordi circolari che però penso di integrare coi due raccordi di transizione clotoidici.
    ---
    Problema da sviluppare (formule e possibilmente codice o pseudocodice)
    Si abbia una bilatera di vertici A, B C.
    siano note le coordinate planimetriche dei tre vertici
    Sia noto il raggio del raccordo
    Determinare le coordinate dei punti di tangenza T1 e T2 espresse nello stesso sistema di A B e C

    p.S.: Qui ci vorrebbe l'aiuto di Francesco Coppola, ma a quanto pare è sparito dal circuito forum
    Attached Image
    Raccordo

     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    se usiamo la geometria analitica, il problema principale è quello di determinare il punto di intersezione di 2 rette parallele alle 2 rette assegnate e poste alla distanza d da queste. è evidente che messa così la questione appare banale ed è certamente nota a chiunque legge.

    la difficoltà principale credo sia quello di individuare - con un procedimento generico - da che parte prendere le parallele.

    a mio avviso, il problema è superabile prendendo ambo le parallele e trovando tutti e 4 i punti di intersezione, tuttavia, poiché uno solo dei punti di intersezione sta all'interno e gli altri 3 stanno all'esterno, il punto richiesto (centro del raccordo, diciamo P) è quello per il quale sia la matrice delle coordinate dei vertici del triangolo ABP, sia la matrice delle coordinate dei vertici del triangolo BCP hanno lo stesso segno di quella del triangolo ABC.

    mi spiego.

    stabilisco un verso di percorrenza. sia questo A-->B-->C.

    calcolo il determinante di questa matrice:

    xA yA 1
    xB yB 1
    xC yC 1

    nel caso indicato il determinante sarà positivo, perché dalla retta AB per andare in C devo curvare con angolo antiorario (convenzionalmente positivo).

    per i 4 punti di intersezione P1 - P2 - P3 - P4 delle rette a distanza d da quelle date, creo le 8 matrici del tipo:

    xA yA 1
    xB yB 1
    xP yP 1

    xB yB 1
    xC yC 1
    xP yP 1

    solo per il punto P richiesto entrambe queste matrici avranno lo stesso segno della prima (in questo caso, il segno positivo).
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    227
    Reputation
    +41

    Status
    Offline
    non sono certo in grado di affrontare il problema, ma possiedo un vecchio manuale relativo alla costruzione di strade con formule e tabelle. se può essere utile posso digitalizzare la parte relativa

    curve
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (pisanel @ 11/10/2023, 11:13) 
    non sono certo in grado di affrontare il problema, ma possiedo un vecchio manuale relativo alla costruzione di strade con formule e tabelle. se può essere utile posso digitalizzare la parte relativa

    Grazie Pisanel.
    Capisci che per poter creare un applicativo che giri sul cad non posso usare tabelle, ma devo affidarmi sulla geometria. Anche quando affronterò la questione dei raccordi di transizione clotoidici. In passato i "tracciatori d'asse stradale" usavano le tabelle numeriche della clotoide unitaria" . Io non posso
    --
    se dovessi disegnare direttamente al cad quel raccordo basterebbe ricorrere allo strumento "smussa" cliccare sui due lati della bilatera, fissare il raggio e oplà.
    Invece io da codice devo poter cliccare sulla bilatera, acquisire le coordinate dei tre vertici a fissando il raggio devo costruire la polilinea mista che mi servirà poi come asse sezionante.
    --
    Qualche idea su come risolvere la faccenda la avrei ma non mi piace tanto.
    L'idea di Reversi del ricorso ai determinanti sarà invece da me sviluppata. Intanto la prima cosa da fare è verificare che i tre vertici non siano allineati e questo posso farlo immediatamente col determinante.
    Ragionerò per intanto sul suggerimento dell'amico Reversi.
    ----
    Grazie

    Edited by afazio - 11/10/2023, 12:14
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    In sostanza il segno del determinante mi dice se la curva è a destra oppure a sinistra (con riferimento al primo lato). Se il determinante è nullo i vertici sono allineati e vedro poi come gestire il caso.
    curva a sinistra: determinante positivo
    curva a destra: determinante negativo

    Pertanto volendo seguire l'idea di Reversi di trovare il punto di intersezione tra le due parallele off-settate di R, l'offset avrà lo stesso segno del determinante.
    --
    Pero mi stavo chiedendo se non sia piu agevole ragionare sugli angoli (magari col ricorso agli azimuth tanto cari a Francesco Coppola).
    Noto l'angolo formato tra i due lati (il minore in valore assoluto), indichiamo con 2*alfa, posso ricavarmi la tangente con:
    t = R/Tan(alfa)
    A questo punto potrei ricorrere alla similitudine per ricavare T1 e T2
    in questo modo mi svincolo da operazioni di offset e di intersezioni.
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Infatti io stavo pensando proprio a quest'ultima soluzione.

    Lunghezza del segmento tangente e raggio sono legate dalla formula riportata da Afazio.
    Saputo il raggio e l'angolo tra le rette, è semplice individuare la tangente e quindi i punti sulle due rette.

    Riguardo al libricino riportato da Pisanel, ne aveva uno mio padre. Quando quattordicenne lo aiutavo nei tracciamenti che ogni tanto gli capitava di fare, per piccole strade interpoderali, ecc. lo vedevo sfogliare il libricino per staccare appunto i punti tangenti e "corda" in modo da riportare già sul terreno oltre ai vertici delle poligonali anche il tracciato (seppur per soli 3 punti) delle curve.

    Sicuramente ce lo ho ancora a casa. Ma chissà dove. Non so perchè ma ho il ricordo di un autore francese.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (zax2013 @ 11/10/2023, 12:30) 
    .....

    Sicuramente ce lo ho ancora a casa. Ma chissà dove. Non so perchè ma ho il ricordo di un autore francese.

    Io ricordo vagamente un "Lunel" ma in rete non ho trovato nulla di specifico
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Trovo questo in seconda mano su ebay:

    https://picclick.it/MANUALE-PRATICO-PER-IL...4005044413.html

    Conferma il tuo ricordo: Lunel
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (afazio @ 11/10/2023, 12:06) 
    Pertanto volendo seguire l'idea di Reversi di trovare il punto di intersezione tra le due parallele off-settate di R, l'offset avrà lo stesso segno del determinante.

    a questo punto hai già finito, perché se hai determinato il lato dal quale eseguire l'offset non lavori più con 4 rette ma solo con 2 che, ovviamente, hanno 1 solo punto di intersezione.
     
    Top
    .
  10.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    227
    Reputation
    +41

    Status
    Offline
    il mio è questo

    curve2
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Vedrò stasera il codice che ho implementato nel mio SdA proprio per eseguire il raccordo (ho un numero di vertici variabili, dal minimo di 3 al massimo di 8 vertici intermedi - sono di bocca buona e mi accontento).

    Di sicuro ero partito come dice reversi con le parallele ed i 4 punti possibili. Poi l'algoritmo era incasinato per la scelta di quale dei 4 (ed in effetti ogni tanto "falliva").

    Successivamente, anche a seguito di proficuo post qui, l'ho modificato e da quel momento si è sempre ben comportato.
     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Tutto quanto ti serve (e che ho fatto diventare codice in SdA) è in questo topic:

    https://bar-ingegneria.forumfree.it/?t=67820761&st=30

    Alla fine, forse un po' sparpagliato, ci sono anche i relativi codici scritti in C.
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (zax2013 @ 11/10/2023, 15:38) 
    Tutto quanto ti serve (e che ho fatto diventare codice in SdA) è in questo topic:

    https://bar-ingegneria.forumfree.it/?t=67820761&st=30

    Alla fine, forse un po' sparpagliato, ci sono anche i relativi codici scritti in C.

    Bei tempi quelli dello studio degli algoritmi geometrici.

    Ti mostro l'avanzamento del mio programma.
    Potevo fermarmi anche qui con molta soddisfazione, ma l'ambizione, il gioco, il fascino della programmazione e la follia insieme ad insani consigli del mio collega Giacomino, mi hanno fatto intravedere la possibilità di fare un programma completo per il disegno di profili terreno e progetto e sezioni stradali. Chissà se poi non posso anche....
    ---
    Qui, avviando il programma si apre quel dialogo con parecchie linquette. La linguetta che interessa è quella relativa a "Sezione da curve di livello".
    Entrandovi, dopo aver settato alcuni parametri (che non sto qui a illustrare) , premendo il bottone 1, si torna sul disegno; qui occorre selezionare l'area che si intende sezionare, e l'asse di sezione x-x.
    Fatto questo il programma torna a visualizzare il dialogo ma con la box lista piena dei dati x, y, y progressiva e quota.
    Si settano i parametri delle finche, le scale secondo i due assi, quindi premendo il bottone 2, si torna sul disegno per click sul punto dal quale iniziare a disegnare il profilo.
    Il tutto viene disegnato in un layer a parte che creo appositamente per evitare di sporcare il disegno originario.
    Capisci che basta cambiare la "sezionante" da segmento a polilinea per passar di grado?

    Edited by afazio - 11/10/2023, 18:34
    Attached Image
    progress

     
    Top
    .
  14.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (afazio @ 11/10/2023, 17:48) 
    Bei tempi quelli dello studio degli algoritmi geometrici.

    beh, non siamo mica morti. verranno ancora altri bei tempi e comunque tocco ferro.
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    9
    Reputation
    +7

    Status
    Offline
    Buonasera, vi propongo la seguente soluzione cioè quella dei coseni direttori che è valida nello spazio:
    - calcolo i coseni direttori dei vettori vBA e vBC
    vBA = (xA-xB,yA-yB,zA-zB)
    vBC = (xC-xB,yC-yB,zC-zB)
    - calcolo l'angolo compreso tra i due vettori
    β = arcos (vBA · vBC)
    - calcolo le distanze t = BT1 e p = BP come da disegno con semplici relazioni trigonometriche sul triangolo rettangolo BPT1
    t = r / tang (β/2)
    p = r / sen (β/2)
    - calcolo i coseni direttori del vettore vBP(i3,j3,k3) come vettore somma normalizzato:
    |vBP| = √[(i1+i2)²+(j1+j2)²+ k1+k2)²]
    j3 =( j1+j2) / |vBP|
    k3 = (k1+k2) / |vBP|
    i3 = (i1+i2) / |vBP|
    - calcolo le coordinate dei punti T1, T2 e P:
    T1 ( xB+i1·p, yB+j1·p, zB+k1·p)
    T2 ( xB+i2·p, yB+j2·p, zB+k2·p)
    P ( xB+i3·p, yB+j3·p, zB+k3·p)
    https://image.forumfree.it/1/3/4/6/3/2/7/4/1697041471.png

    Edited by afazio - 11/10/2023, 18:43
    Attached Image
    dany

     
    Top
    .
22 replies since 11/10/2023, 07:22   621 views
  Share  
.