Newsgroup: it.comp.lang.visual-basic
Titolo: Intersezione tra triangoli

Qualcuno ha notizie su qualche algoritmo in VB ( o in QB) per calcolare la
linea di intersezione tra 2 triangoli nello spazio 3D?
Ho tradotto ben 5 algoritmi dal C che fanno tutti la stessa cosa in modo
diverso ma non me ne va uno... e' ovvio che sbaglio qualcosa io, ma ho
esaurito le risorse, non so più che pesci prendere.
Grazie
Fabio Guerrazzi
http://www.sourcecode4free.com/cgt
fab...@libero.it

 ha scritto nel messaggio
news:_dsL8.7780$86.1...@twister1.libero.it...

Specifica meglio di cosa hai bisogno
forse ti si può aiutare ...
--
Mauro
www.cerretosoft.it

 forse ti si puņ aiutare ...
meglio? sto cercando un algoritmo per il calcolo della linea di intersezione
tra 2 triangoli. Non saprei come spiegarmi meglio
Fabio


Non sono un genio in matematica
e non so se ti potrň aiutare
ti ho risposto perché mi capita spesso di risolvere problemi grafici
con algoritmi inventati di sana pianta
forse non l'algoritmo piů ottimizzato possibile
ma di solito funziona
dunque:
1 triangoli in ambiente 2D o 3D
2 intersezione intesa come equazione di una retta, come coordinate di inizio
e fine di un segmento o che altro
3 quali sono i dati di partenza per i triangoli (coordinate dei vertici?)
4 come sono espresse le coordinate (Coordinate cartesiane ortogonali?
coordinate cilindriche? coordinate sferiche?)
Intendo qualcosa del genere con "spiegati meglio" o forse non sai neanche tu
di cosa stai parlando?
--
Mauro
www.cerretosoft.it

 di cosa stai parlando?
Uhm... considerando 
http://www.sourcecode4free.com/cgt
 ,
direi che il buon Fabio sappia di cosa sta parlando, anche se
magari non ha dato delle indicazioni molto precise. ;-)
Bye, G.
--
Le risposte alle tue domande sono sul Sito Comune
di questo NewsGroup: 
http://it-lang-vb.net/
... e nell'help in linea !


Considerando il link fornito direi che probabilmente ne sa più di me!
Il fatto è che avevo interpretato un tono un po' strafottente nella sua
risposta
Comunque sia (ognuno è libero di avere anche le sue giornate "no")
Se ciò che chiede sarà nelle mie possibilità, io sono qua
altrimenti spero ci sia sia lui, quando avrò bisogno io.
--
Mauro
www.cerretosoft.it

 Comunque sia (ognuno è libero di avere anche le sue giornate "no")
Non siate nervosi, dico sempre. :-)
O perlomeno lo dico da quando ho spaccato la vecchia
scrivania con un cazzottone, e il mio pugno non stava
molto meglio della scrivania, dopo. :-(((
Un Papeino solo decaffeinato, da allora.

"Paperino" <non...@lo.dico> ha scritto nel messaggio
news:adm43e$5ma8$1...@stargate1.inet.it...

Beh una puntina di ironia ... forse
Nervoso mai
a parte che, da adolescente, ho avuto anch'io un paio di problemi con
porte, armadi, frigoriferi, mattoni
comunque io non posso arrabbiarmi: sono un vulcaniano!!!
--
Mauro
www.cerretosoft.it

 ha scritto nel messaggio
news:_dsL8.7780$86.1...@twister1.libero.it...


 ha scritto nel messaggio
news:_dsL8.7780$86.1...@twister1.libero.it...


 esaurito le risorse, non so più che pesci prendere.
Io ho una bella libreria FORTRAN con diversi algoritmi di geometria,
incluse le intersezioni, in 3D, di triangoli con piani.
Se proprio sei disperato :-) posso provare a tradurre le routines
di tuo interesse ed a mandartele, sperando che si comportino meglio
di quelle in C.
Ciao e fammi sapere.
Franco


Ciao Marco, grazie della risposta
L'algoritmo che hai citato a memoria è lui, ma credo che io mi stia perdendo
un pò tra i vari dot/cross products nel calcolo dei coefficenti dei piani e
delle varie equazioni.
Le cose che ho tradotto derivano infatti da Paul Bourke,  Dave Elbry della
wild magic e altri, ma presentano tutti lo stesso problema. La linea
restituita dall'algoritmo è rappresentata come vettore dell'origine e della
direzione. Non è citato nessun modo su come trasformarli in coordinate
cartesiane, nemmeno da altre fonti
La logica che hai esposto è quella ed è abbastanza evidente e chiara anche
negli algoritmi che ho con me. Di fatto però, ne ho applicati 5 e ho
risultati sempre diversi.
Ho chiesto ai luminari in materia su comp.graphic.algorithms ma ho ottenuto
più risposte qui, come immaginavo :)
ed è per questo che mi chiedevo se qualcuno avesse qualcosa di già
funzionante e di testato per VB. Non per pigrizia, quanto per il rischio di
abbandono del problema. Sono giorni che fisso il monitor come un imbecille
:/
Grazie
Fabio


Franco, speravo che buttando l'amo o te o fabio guerra vi avrei pescato :)
ero li li per scriverti in privato poi l'ho lasciata come ultimissima
spiaggia :))
Se mi puoi dare una mano..
Posto il codice della funzione principale (che non mi funziona)
tri_tri_intersect_with_isectline è una delle funzioni tradotte dal C ed è
quella che probabilmente non mi va. Se vuoi posto anche tutto il BAS che la
contiene, magari le confronti con quello che hai in FORTRAN, oppure la
sostituisci con quello che hai tu.
GOD BLESS YOU
Fabio
----------------------------------------------------------------------------
---------------------
Function TriangleIntersectTriangle(t1x1 As Double, t1y1 As Double, t1z1 As
Double, _
         t1x2 As Double, t1y2 As Double, t1z2 As Double, _
         t1x3 As Double, t1y3 As Double, t1z3 As Double, _
         t2x1 As Double, t2y1 As Double, t2z1 As Double, _
         t2x2 As Double, t2y2 As Double, t2z2 As Double, _
         t2x3 As Double, t2y3 As Double, t2z3 As Double, _
         xInt1 As Double, yInt1 As Double, zInt1 As Double, xInt2 As Double,
yInt2 As Double, zInt2 As Double) As Boolean
    Dim t(3) As Coord
    Dim P(3) As Coord
    Dim q(2) As Coord, cop As Integer
     USE_EPSILON_TEST = True
 ' intersezione tra 2 triangoli
 ' se c'è intersezione
 ' restituisce True e in xInt(n) la linea di intersezione
    t(1).x = t1x1: t(1).y = t1y1: t(1).z = t1z1
    t(2).x = t1x2: t(2).y = t1y2: t(2).z = t1z2
    t(3).x = t1x3: t(3).y = t1y3: t(3).z = t1z3
    P(1).x = t2x1: P(1).y = t2y1: P(1).z = t2z1
    P(2).x = t2x2: P(2).y = t2y2: P(2).z = t2z2
    P(3).x = t2x3: P(3).y = t2y3: P(3).z = t2z3
  ' t(n) triangolo A
  ' p(n) triangolo B
  ' tri_tri_intersect_with_isectline: Muller, Graphic Gems 1997
  TriangleIntersectTriangle = tri_tri_intersect_with_isectline(P(1), P(2),
P(3), t(1), t(2), t(3), cop, q(1), q(2)) = 1
    'If cop = 1 Then Stop ' è coplanare
 ' restituisce la linea di intersezione
     xInt1 = q(1).x
     yInt1 = q(1).y
     zInt1 = q(1).z
     xInt2 = q(2).x
     yInt2 = q(2).y
     zInt2 = q(2).z
End Function

 linea di intersezione tra 2 triangoli nello spazio 3D?
Provato su comp.graphics.algorithms?
Ciao


Hi Fabio Guerrazzi i am sent a email to you, what you email now ? i am need help with Image Processing in VB6, some links of your website are broken.