10/07/12 18:38
nessuno
La questione è solamente geometrica non grafica.
Ma non ho capito esattamente cosa devi calcolare alla fine ... ti serve il punto medio dati i punti iniziale e finale?
it.wikipedia.org/wiki/…
Ultima modifica effettuata da nessuno 10/07/12 18:38
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
10/07/12 19:10
nessuno
I punti in un segmento sono infiniti ...
Devi quindi definire un "passo" orizzontale (o verticale) e impostare un ciclo apposito.
In base al valore del ciclo (sia X o Y) calcoli l'altra coordinata in base alla nota formula che ottiene le coordinate di un punto appartenente a un segmento dato.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/07/12 7:43
Uno sciame di API
Ho risolto!
Grazie nessuno, mi sei stato molto di aiuto.
Se a quelcuno potesse servire, questa è la funzione:
Function PointsToArray(ByVal p1 As Point, ByVal p2 As Point)
Dim s, p As Size
Dim punti As New List(Of Point)
If p1.Equals(p2) = True Then
punti.Add(New Point(p1.X, p1.Y)) 'se i punti sono uguali non esegue tutta la funzione
Else
s = New Size(((p1.X - p2.X) ^ 2) ^ 0.5, ((p1.Y - p2.Y) ^ 2) ^ 0.5) 'imposta come dimensioni di s il valore assoluto della differenza dei due punti
'Questi if controllano quali sono i lati più corti e li impostano come dimensioni di p
If p1.X > p2.X Then
p.Width = p2.X
Else
p.Width = p1.X
End If
If p1.Y > p2.Y Then
p.Height = p2.Y
Else
p.Height = p1.Y
End If
'imposta un "passo" adatto in base alle dimensioni di s
If s.Width > s.Height Then
For x = 0 To s.Width
punti.Add(New Point(x, s.Height * x / s.Width))
Next
Else
For y = 0 To s.Height
punti.Add(New Point(s.Width * y / s.Height, y))
Next
End If
If p1.X < p2.X And p1.Y > p2.Y Then
punti.Reverse() 'inverte i valore nell'array
For n = 0 To punti.Count - 1
punti.Item(n) = New Point(s.Width - punti.Item(n).X, punti.Item(n).Y) 'e con un ciclo cambia il valore di x
Next
ElseIf p1.X > p2.X And p1.Y > p2.Y Then
punti.Reverse() 'inverte i valore nell'array
End If
For n = 0 To punti.Count - 1
punti.Item(n) = New Point(punti.Item(n).X + p.Width, punti.Item(n).Y + p.Height) 'tramite un ciclo for somma alle coordinate i valori di p
Next
End If
Return punti
End Function
Ultima modifica effettuata da Uno sciame di API 11/07/12 8:52
aaa