Retta VS Triangolo

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
Avatar utente
Red_Rastaman
Messaggi: 3
Iscritto il: 06 mar 2007, 17:37

Retta VS Triangolo

Messaggio da Red_Rastaman »

Salve! Avrei un problemino...
Ho le cordinate dei vertici di un triangolo (in 3d) e una retta perpendicolare al piano "di terra" condotta da un certo punto di cui conosciamo le cordinate.
Vorrei sapere (dando per scontato che la retta interseca il triangolo) le cordinate del punto di intersezione (ovviamente X e Y saranno quelle del punto che ha generato la retta, e ora mi serve Z...)

Immagine

Spero che questo disegnino vi aiuti a capire. Grazie infinite a chi mi aiuterà!!
MdF

Messaggio da MdF »

Una volta trovata l'equazione del piano per il triangolo non dovrebbe essere difficile, la si mette a sistema con l'equazione della retta e si trova il punto.

Visto che (mi sto chiedendo il perché) so cosa fare ma non so come farlo, non credo di saperti aiutare oltre. Ci studio ma non contar troppo su di me :(
Avatar utente
Marco
Site Admin
Messaggi: 1331
Iscritto il: 01 gen 1970, 01:00
Località: IMO '93

Messaggio da Marco »

Un modo furbo è di usare la geometria affine. Chiama X' la proiezione del punto X sul piano Oxy.

Per certi coefficienti a, b, c a somma 1, avrai che

aA + bB + cC = P,

dato che P è complanare.

Le proiezioni mantengono le affinità, quindi, proiettando tutto sul piano Oxy, per gli stessi coefficienti di prima avrai che

aA' + bB' + cC' = P' = H'.

Ma A', B', C', H' sono tutti dati del problema, quindi sai come ricavare a, b e c e quindi P.

Questa è matematica olimpica, però. Lo sposto. M.
[i:2epswnx1]già ambasciatore ufficiale di RM in Londra[/i:2epswnx1]
- - - - -
"Well, master, we're in a fix and no mistake."
Avatar utente
Red_Rastaman
Messaggi: 3
Iscritto il: 06 mar 2007, 17:37

Messaggio da Red_Rastaman »

Marco ha scritto:Un modo furbo è di usare la geometria affine. Chiama X' la proiezione del punto X sul piano Oxy.

Per certi coefficienti a, b, c a somma 1, avrai che

aA + bB + cC = P,

dato che P è complanare.

Le proiezioni mantengono le affinità, quindi, proiettando tutto sul piano Oxy, per gli stessi coefficienti di prima avrai che

aA' + bB' + cC' = P' = H'.

Ma A', B', C', H' sono tutti dati del problema, quindi sai come ricavare a, b e c e quindi P.
Grazie mille per l'aiuto Marco! Ma sfortunatamente non ho mai sentito parlare di geometria affine o robe simili...sono appena in seconda liceo e mi serve risolvere questo problema per un algoritmo che sto scrivendo in c++.
Potresti spiegare con termini...hum...ancora più elementari? Ad esempio, quando usi nell'equazione i punti, ti riferisci alle loro cordinate? Perciò aA sarebbe:
A.X*a , A.Y*a, A.Z*a ?
MindFlyer

Messaggio da MindFlyer »

Esatto. Avevo immaginato che ti servisse per un programma.
Ora, visto che incidentalmente queste cose servono anche a me per un lavoro che sto facendo, ti dò una mano.
Ho calcolato una versione simmetrica della formula e una versione asimmetrica. Poiché quella asimmetrica è meno estetica ma leggermente più veloce computazionalmente, ti propongo quest'ultima:

Codice: Seleziona tutto

x1 = B.x-A.x;
x2 = C.x-A.x;
x3 = A.x-H.x;

y1 = B.y-A.y;
y2 = C.y-A.y;
y3 = A.y-H.y;

z1 = B.z-A.z;
z2 = C.z-A.z;

d1 = x1*y2-y1*x2;
d2 = y1*z2-z1*y2;
d3 = z1*x2-x1*z2;

P.x = H.x;
P.y = H.y;
P.z = (x3*d2+y3*d3)/d1+A.z;
Avatar utente
Red_Rastaman
Messaggi: 3
Iscritto il: 06 mar 2007, 17:37

Messaggio da Red_Rastaman »

Grazie mille per il codice...invece per capire se la retta intercetta o no il triangolo? Qualche idea?
MindFlyer

Messaggio da MindFlyer »

Codice: Seleziona tutto

// Calcola x1, x2, x3, y1, y2, y3 come sopra

p1 = x1*x1+y1*y1;
p2 = x2*x2+y2*y2;
p3 = x1*x2+y1*y2;
p4 = x2*x3+y2*y3;
p5 = x3*x1+y3*y1;

v1 = p3*p5-p1*p4;
v2 = p3*p4-p2*p5;
v3 = p1*p2-p3*p3;

if(((v1>0 && v2>0 && v3>0)||(v1<0 && v2<0 && v3<0)) && v1+v2<v3) // Intercetta
else // Non intercetta
MindFlyer

Messaggio da MindFlyer »

Ho spostato tutto in Informatica, mi sembra più consono.
Rispondi