-
| .
|
|
|
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 forumAttached Image
|
|
| .
|
-
| .
|
|
|
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).
|
|
| .
|
-
| .
|
|
|
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
|
|
| .
|
-
| .
|
|
|
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
|
|
| .
|
-
| .
|
|
|
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.
|
|
| .
|
-
| .
|
|
|
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.
|
|
| .
|
-
| .
|
|
|
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
|
|
| .
|
-
-
| .
|
|
|
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.
|
|
| .
|
-
| .
|
|
|
il mio è questo
|
|
| .
|
-
| .
|
|
|
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.
|
|
| .
|
-
-
| .
|
|
|
CITAZIONE (zax2013 @ 11/10/2023, 15:38) 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:34Attached Image
|
|
| .
|
-
| .
|
|
|
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.
|
|
| .
|
-
| .
|
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:43Attached Image
|
|
| .
|
22 replies since 11/10/2023, 07:22 621 views
.