Savoir si un point est dans un losange

Réponses à toutes vos questions du CP à la 3ème
Patak
Membre Naturel
Messages: 11
Enregistré le: 01 Juin 2012, 22:05

Savoir si un point est dans un losange

par Patak » 16 Aoû 2012, 23:03

Bonjour à tous,
Je suis en 3 ême et fais de la programmation, plus précisément du VB.NET.
J'ai un losange dont je connais les coordonnées des quatre coins et du centre.
Connaissez-vous un moyen de savoir si un point (X, Y) appartient à ce losange ?
Voici une image de mon problème :

Image

Je suis dans ce cas là, je connais les coordonnées de A, B, C, D je connais aussi I.
Disons que BA // CD et CB // DA, comment savoir si M si situe dans le losange ABCD ?
Merci pour vos prochaine réponse :ptdr:



Avatar de l’utilisateur
chan79
Membre Légendaire
Messages: 10330
Enregistré le: 04 Mar 2007, 19:39

par chan79 » 17 Aoû 2012, 07:35

Mathématique divine a écrit:tu fais de la programmation en 3ème??? :doh: explique toi

Juste des idées
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

Patak
Membre Naturel
Messages: 11
Enregistré le: 01 Juin 2012, 22:05

par Patak » 17 Aoû 2012, 08:15

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 l’aire 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:

 

Retourner vers ✎ Collège et Primaire

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite