"trouver l'équation d'une droite à partir de deux points"

Contenu du snippet

Compilateur: DevCpp et Visual C++ (6,7 ou autres) ...

A partir de deux points ce programme peut trouver l'équation qui lui correspond
et pourquoi pas la déssiner ...

-> Equation cartésiènne de la forme: ax + by + c = 0

-> Vecteur directeur associé à cette droite: v(-b,a)
-b=(pt2.x-pt1.x)
a=(pt2.y-pt1.y)

Voilà, n'ésité pas à laisser des commentaire ...

PS: si vous avez des erreurs de compilation ou autre faite le moi savoir, merci.
(en cas d'inatention en recopiant ce code directement sans le tester )

Source / Exemple :


//////////////////////////////////////////////////////////////////////////
// En-têtes:
//////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>

//////////////////////////////////////////////////////////////////////////
// Classe d'un vecteur 2D:
//////////////////////////////////////////////////////////////////////////
class CVector2D
{
    public:

        CVector2D(){}
        ~CVector2D(){}

        CVector2D(long _x, long _y):x(_x),y(_y){}

        long x,y;
};

//////////////////////////////////////////////////////////////////////////
// Calcul du vecteur directeur de la droite:
//////////////////////////////////////////////////////////////////////////
CVector2D mVector(CVector2D vPoint1, CVector2D vPoint2)
{
    static CVector2D vVector;

    vVector.x=(vPoint2.x-vPoint1.x);
    vVector.y=(vPoint2.y-vPoint1.y);

    return(vVector);
}

//////////////////////////////////////////////////////////////////////////
// Corps du programme:
//////////////////////////////////////////////////////////////////////////
int main(void)
{
    // Initialisation des deux points de la droite delta:
    CVector2D vPoint1=CVector2D(1,2);
    CVector2D vPoint2=CVector2D(4,5);
    
    // Vecteur directeur de composantes (-b,a) de la droite delta:
    CVector2D vVector=mVector(vPoint1,vPoint2);
    
    // Equation de la droite delta du type -> ax + by + c = 0:
    int a =  vVector.y;
    int b = -vVector.x;
    
    // Constante -> c = - (ax + by) ; x et y étant les composantes
    // d'un des deux point de la droite delta:
    int c = -((a*vPoint1.x)+(b*vPoint1.y));
    
    // Ordonne les x:
    if(vPoint1.x>vPoint2.x)
    {
        int tmp_x=vPoint1.x;
        
        vPoint1.x=vPoint2.x;
        vPoint2.x=tmp_x;
    }
    
    // Ordonne les y:
    if(vPoint1.y>vPoint2.y)
    {
        int tmp_y=vPoint1.y;
        
        vPoint1.y=vPoint2.y;
        vPoint2.y=tmp_y;
    }
    
    // Affiche l'équation de la droite delta:
    printf("DELTA: (%d)x + (%d)y + (%d) = 0\n\n", a,b,c);
    
    for(long x=vPoint1.x; x<=vPoint2.x; x++)
    for(long y=vPoint1.y; y<=vPoint2.y; y++)
    {
        // Si l'équation est vérifiée:
        if(a*x+b*y+c==0)
        {
            printf("x = %d -- y = %d\n", x,y);
        }
    }
    
    // Fin:
    printf("\n");
    system("PAUSE");
    return(0);
}

Conclusion :


A vous de jouer ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.