Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Visual Basic 2005   Ciclo Tra due Point di una linea
Forum - C# / VB.NET - Visual Basic 2005 Ciclo Tra due Point di una linea

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Federico1976 (Normal User)
Rookie


Messaggi: 42
Iscritto: 23/03/2009

Segnala al moderatore
Postato alle 20:26
Lunedì, 23/03/2009
Questo topic è stato chiuso dal moderatore

Ciao  a Tutti Sono  un programmatore amatoriale Sto provando a fare un pragrammino di grafica in vb.net  Mi servirebbe fare un ciclo di una linea punto per punto per controllare se due linee si intesecano non so come fare e magari mi spiego anche un po male
chi mi puo aiutare
Vi ringrazio  anticipatamente :hail:


Bisogna vivere come si pensa,altrimenti si finirà per pensare a come si è vissuto.
P.  Bourget
L'unica differenza tra le persone sta nella quantità di pazia che hanno.
Antonio Bannò
Un mano tesa, nel vuoto del bisogno, può arrivare a toccare l'anima
PM
Avatar
fabriziorocca (Normal User)
Guru


Messaggi: 1162
Iscritto: 22/03/2009

Segnala al moderatore
Postato alle 20:29
Lunedì, 23/03/2009
chiedi a Totem , lui è un esperto di VB.NET !!!


PM
Avatar
Federico1976 (Normal User)
Rookie


Messaggi: 42
Iscritto: 23/03/2009

Segnala al moderatore
Postato alle 20:37
Lunedì, 23/03/2009
Ti ringrazio della risposta ma come posso chiedere?


Bisogna vivere come si pensa,altrimenti si finirà per pensare a come si è vissuto.
P.  Bourget
L'unica differenza tra le persone sta nella quantità di pazia che hanno.
Antonio Bannò
Un mano tesa, nel vuoto del bisogno, può arrivare a toccare l'anima
PM
Avatar
fabriziorocca (Normal User)
Guru


Messaggi: 1162
Iscritto: 22/03/2009

Segnala al moderatore
Postato alle 21:25
Lunedì, 23/03/2009
clicca qui per mandarli un messaggio, anche di carattere tecnico :  http://www.pierotofy.it/pages/login/cpanel/mail/write.php? ...


PM
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 9:11
Martedì, 24/03/2009
si però scusate...sarebbe giusto rispondere sul forum e non privatamente. Poi vi assicuro che non c'è bisogno di inviare un messaggio a Totem...appena si logga risponde di sicuro. Comunque ora faccio delle prove di codice e riposto.


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM
Avatar
Federico1976 (Normal User)
Rookie


Messaggi: 42
Iscritto: 23/03/2009

Segnala al moderatore
Postato alle 10:17
Martedì, 24/03/2009
Ciao  ti ringrazio ai ragione anche perche no si riesce a trovare nulla di simile in google
se ti venisse a mente qualcosa io so qua
Ciao:hail:

Ultima modifica effettuata da Federico1976 il 24/03/2009 alle 10:18


Bisogna vivere come si pensa,altrimenti si finirà per pensare a come si è vissuto.
P.  Bourget
L'unica differenza tra le persone sta nella quantità di pazia che hanno.
Antonio Bannò
Un mano tesa, nel vuoto del bisogno, può arrivare a toccare l'anima
PM
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 11:47
Martedì, 24/03/2009
ma vuoi solo sapere se si intersecano o vuoi anche le coordinate del punto in cui si intersecano?


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 12:41
Martedì, 24/03/2009
Allora...ho trovato del codice in Java qui: http://forum.html.it/forum/showthread.php?threadid=1310708;
l'ho tradotto in vb.net e l'ho trasformato in due overloads di una function.
Codice sorgente - presumibilmente VB.NET

  1. Private Overloads Function Intersezione(ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As Single, ByVal y2 As Single, ByVal x3 As Single, ByVal y3 As Single, ByVal x4 As Single, ByVal y4 As Single) As Point
  2.         Dim a1 As Single = (y2 - y1)
  3.         Dim b1 As Single = -1 * (x2 - x1)
  4.         Dim c1 As Single = -1 + x1 * (y2 - y1) + y1 * (x2 - x1)
  5.  
  6.         Dim a2 As Single = (y4 - y3)
  7.         Dim b2 As Single = -1 * (x4 - x3)
  8.         Dim c2 As Single = -1 * x3 * (y4 - y3) + y3 * (x4 - x3)
  9.  
  10.         Dim Den As Single = (a1 * b2 - a2 * b1)
  11.         If Den <> 0 Then
  12.             Dim yp As Single = (a2 * c1 - a1 * c2) / Den
  13.             Dim xp As Single = (b1 * c2 - b2 * c1) / Den
  14.             Return New Point(xp, yp)
  15.         Else
  16.             Return Nothing
  17.         End If
  18.     End Function
  19.  
  20.     Private Overloads Function Intersezione(ByVal p1 As Point, ByVal p2 As Point, ByVal p3 As Point, ByVal p4 As Point) As Point
  21.         Dim x1 As Single = p1.X
  22.         Dim y1 As Single = p1.Y
  23.         Dim x2 As Single = p2.X
  24.         Dim y2 As Single = p2.Y
  25.         Dim x3 As Single = p3.X
  26.         Dim y3 As Single = p3.Y
  27.         Dim x4 As Single = p4.X
  28.         Dim y4 As Single = p4.Y
  29.  
  30.         Dim a1 As Single = (y2 - y1)
  31.         Dim b1 As Single = -1 * (x2 - x1)
  32.         Dim c1 As Single = -1 + x1 * (y2 - y1) + y1 * (x2 - x1)
  33.  
  34.         Dim a2 As Single = (y4 - y3)
  35.         Dim b2 As Single = -1 * (x4 - x3)
  36.         Dim c2 As Single = -1 * x3 * (y4 - y3) + y3 * (x4 - x3)
  37.  
  38.         Dim Den As Single = (a1 * b2 - a2 * b1)
  39.         If Den <> 0 Then
  40.             Dim yp As Single = (a2 * c1 - a1 * c2) / Den
  41.             Dim xp As Single = (b1 * c2 - b2 * c1) / Den
  42.             Return New Point(xp, yp)
  43.         Else
  44.             Return Nothing
  45.         End If
  46.     End Function



Un esempio di come puoi utilizzare questa function è:
Codice sorgente - presumibilmente VB.NET

  1. Dim R As Point = Intersezione(2, 2, 8, 8, 10, 10, 20, 20)
  2.         If R = Nothing Then
  3.             MsgBox("Parallele")
  4.         Else
  5.             MsgBox("Si intersecano nel punto (" & R.X & ";" & R.Y & ")")
  6.         End If


In questo esempio ho utilizzato il primo overload della funzione, che richiede in input le varie coordinate dei quattro punti che formano i due segmenti. Il secondo overload chiede in input direttamente i quattro punti...solo per comodità.
Se hai dubbi posta! :k:


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM
Avatar
Federico1976 (Normal User)
Rookie


Messaggi: 42
Iscritto: 23/03/2009

Segnala al moderatore
Postato alle 18:49
Martedì, 24/03/2009
Sei un Grande Ora provo subito Grazzie Mille
:k:


Bisogna vivere come si pensa,altrimenti si finirà per pensare a come si è vissuto.
P.  Bourget
L'unica differenza tra le persone sta nella quantità di pazia che hanno.
Antonio Bannò
Un mano tesa, nel vuoto del bisogno, può arrivare a toccare l'anima
PM
Pagine: [ 1 2 ] Precedente | Prossimo