1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| Imports System.Drawing
Public Class Form1
Dim newBitmap As Bitmap = New Bitmap(1000, 800)
Dim g As Graphics = Graphics.FromImage(newBitmap)
Dim whitePen As New Pen(Color.White, 5)
Dim redPen As New Pen(Color.Red, 1)
Dim pen_pt_or As New Pen(Color.Green, 10)
Dim Matrice(2000, 3), i, j, CoordX, CoordY, x_origine, y_origine, distance_min As Integer
Dim pt_prec, calc_d, xa, ya, pt_o, ml_pt, ml_pt2, d_min As Integer
Dim Résultat As String
Dim nb_point As String
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
g = Me.PictureBox1.CreateGraphics
Me.PictureBox1.BackColor = Color.Black
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Résultat = ""
nb_point = NumericUpDown1.Value 'InputBox("Saisir un nombre de nb_point.", "Nombre de nb_point", 5)
'#######On génére les points#######
For i = 1 To nb_point
Matrice(i, 0) = Str(i)
Matrice(i, 1) = Int(820 * Rnd() + 1)
Matrice(i, 2) = Int(695 * Rnd() + 1)
Next
'#######On trace les points#######
For i = 1 To nb_point
CoordX = Matrice(i, 1)
CoordY = Matrice(i, 2)
g.DrawLine(whitePen, CoordX, CoordY - 2, CoordX, CoordY + 2)
g.DrawLine(whitePen, CoordX - 2, CoordY, CoordX + 2, CoordY)
Next
''#######Affichage des résultats#######
'For i = 1 To nb_point
' For j = 0 To 3
' Résultat = Résultat & Matrice(i, j) & " "
' Next j
' Résultat = Résultat & Chr(10)
'Next i
'MsgBox(Résultat)
'#######On cherche le point d'origine#######
x_origine = 0
y_origine = 0
distance_min = 9999
For i = 1 To nb_point
calc_d = Math.Sqrt((xa - Matrice(i, 1)) ^ 2 + (ya - Matrice(i, 2)) ^ 2)
If calc_d < distance_min Then
xa = Matrice(i, 1)
ya = Matrice(i, 2)
pt_o = Matrice(i, 0)
distance_min = calc_d
End If
Next
Matrice(pt_o, 3) = 1
g.DrawLine(pen_pt_or, Matrice(pt_o, 1), Matrice(pt_o, 2) - 2, Matrice(pt_o, 1), Matrice(pt_o, 2) + 2)
g.DrawLine(pen_pt_or, Matrice(pt_o, 1) - 2, Matrice(pt_o, 2), Matrice(pt_o, 1) + 2, Matrice(pt_o, 2))
'#######On trace le chemin#######
pt_prec = Matrice(pt_o, 0)
For i = 2 To nb_point
d_min = 10000
ml_pt = 0
For j = 1 To nb_point
If Matrice(j, 3) = 0 Then
ml_pt2 = Math.Sqrt((Matrice(pt_prec, 1) - Matrice(j, 1)) ^ 2 + (Matrice(pt_prec, 2) - Matrice(j, 2)) ^ 2)
If ml_pt2 <= d_min Then
d_min = ml_pt2
ml_pt = Matrice(j, 0)
End If
End If
Next
Matrice(ml_pt, 3) = 1
g.DrawLine(redPen, Matrice(pt_prec, 1), Matrice(pt_prec, 2), Matrice(ml_pt, 1), Matrice(ml_pt, 2))
pt_prec = Matrice(ml_pt, 0)
Next
End Sub
End Class |
Partager