tu fais de la programmation en 3ème??? explique toi
Je ne fais pas de la programmation dans le cadre scolaire mais loisir.
J'adore ça !
M est strictement à l'intérieur si le segment [IM] n'a aucun point d'intersection avec les droites (AB), (BC),( CD) et (DA)
Tu pourrais chercher les équations des demi-plans de frontières les 4 droites précédentes et contenant I mais en 3° .....
La somme des aires des triangles MAB, MBC, MCD et MDA doit être égale à l'aire de ABCD.
Pour l'aire d'un triangle, tu as la formule de Héron
C'est vachement intéressant !
Donc pour savoir si un point M appartient au losange, il me suffit de vérifier que laire des triangles MAB, MBC, MCD et MDA soit égale à l'aire de ABCD.
Pour l'aire d'un triangle, tu as la formule de Héron
Grâce à toute tes indications, j'ai enfin fini mon programme :
- Code: Tout sélectionner
Structure Triangle
Dim A As Point
Dim B As Point
Dim C As Point
Sub New(ByVal Valeur_A As Point, ByVal Valeur_B As Point, ByVal Valeur_C As Point)
A = Valeur_A
B = Valeur_B
C = Valeur_C
End Sub
End Structure
Structure Losange
Dim Haut As Point
Dim Droit As Point
Dim Bas As Point
Dim Gauche As Point
Sub New(ByVal Valeur_A As Point, ByVal Valeur_B As Point, ByVal Valeur_C As Point, ByVal Valeur_D As Point)
Haut = Valeur_A
Droit = Valeur_B
Bas = Valeur_C
Gauche = Valeur_D
End Sub
End Structure
Function DistanceEntreDeuxPoint(ByVal a As Point, ByVal b As Point) As Double
Return Abs(Sqrt(Pow(b.Y - a.Y, 2) + Pow(b.X - a.X, 2)))
End Function
Function AireTriangle(ByVal Triangle As Triangle) As Double
Dim A As Double = DistanceEntreDeuxPoint(Triangle.A, Triangle.B)
Dim B As Double = DistanceEntreDeuxPoint(Triangle.B, Triangle.C)
Dim C As Double = DistanceEntreDeuxPoint(Triangle.C, Triangle.A)
Dim Perimetre As Double = (A + B + C) / 2
Return Sqrt(Perimetre * (Perimetre - A) * (Perimetre - B) * (Perimetre - C))
End Function
Function AireLosange(ByVal Losange As Losange) As Double
Dim Diagonale1 As Double = DistanceEntreDeuxPoint(Losange.Haut, Losange.Bas)
Dim Diagonale2 As Double = DistanceEntreDeuxPoint(Losange.Droit, Losange.Gauche)
Return Diagonale1 * Diagonale2 / 2
End Function
Function PointAppartientLosange(ByVal Losange As Losange, ByVal Point As Point) As Boolean
Dim Aire1 As Double = AireTriangle(New Triangle(Point, Losange.Haut, Losange.Droit))
Dim Aire2 As Double = AireTriangle(New Triangle(Point, Losange.Droit, Losange.Bas))
Dim Aire3 As Double = AireTriangle(New Triangle(Point, Losange.Bas, Losange.Gauche))
Dim Aire4 As Double = AireTriangle(New Triangle(Point, Losange.Gauche, Losange.Haut))
Dim Aire_Losange As Double = AireLosange(Losange)
Dim Addition_Aire As Double = Aire1 + Aire2 + Aire3 + Aire4
If (CInt(Aire_Losange) = CInt(Addition_Aire)) Then
Return True
Else
Return False
End If
End Function
Pour appeler la fontion il suffit de faire :
- Code: Tout sélectionner
PointAppartientLosange({Les coordonnees des quatres coins du losanges, Le point à tester}
Je vous remercie pour votre aide qui m'a était précieuse :ptdr: