Calculer la distance d'un point avec une parabole

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
sylvain231
Membre Relatif
Messages: 307
Enregistré le: 07 Avr 2020, 12:20

calculer la distance d'un point avec une parabole

par sylvain231 » 24 Juin 2023, 17:36

Bonjour,
j'ai une parabole d'équation :
0 = a * (cos(theta) * (x-sommet.x) - sin(theta) * (y-sommet.y))^2- sin(theta) * (x - sommet.x) - cos(theta) * (y - sommet.y)

et je cherche la distance minimale de cette parabole avec le point P(xP,yP)

j'ai essayé de faire un code en C++ grâce à l'équation de Ben mais ça ne marche pas, je précise que ma fonction
resoutEquationTroisiemeDegre fonctionne

voici mon code :

Code: Tout sélectionner
double Parabole::distance(Point2d point) {
    double X = point.x - sommet.x;
    double Y = point.y - sommet.y;
    X = X * cos(theta_radians) - Y * sin(theta_radians);
    Y = X * sin(theta_radians) + Y * cos(theta_radians);
    vector<double> res = resoutEquationTroisiemeDegre(2 * pow(a, 2),0, 1 - 2 * a * Y, -X);
    double minimum = std::numeric_limits<double>::infinity();
    for (int k = 0; k < res.size(); k++) {//pour chaque solution complexe
        double t = res[k];
        double delta = pow(t - X, 2) + pow(a * pow(t, 2) - Y, 2);
        if (delta < minimum)
            minimum = delta;
    }
    return sqrt(minimum);
   
}



sylvain231
Membre Relatif
Messages: 307
Enregistré le: 07 Avr 2020, 12:20

Re: calculer la distance d'un point avec une parabole

par sylvain231 » 24 Juin 2023, 17:56

Ben es-tu sûr de tes équations ?
sinon avec un exemple d'équation de parabole et un point éloigné du sommet donné pouvez-vous me donner la distance attendue que je vérifie SVP ?

sylvain231
Membre Relatif
Messages: 307
Enregistré le: 07 Avr 2020, 12:20

Re: calculer la distance d'un point avec une parabole

par sylvain231 » 24 Juin 2023, 19:21

par exemple pour cette courbe :
theta = 100.085, theta_radians= 1.74681 a = 1.00849 sommet = [200, 300]
et ce point : [476.3, 268.2]
j'obtiens d = 20.1437 au lieu de 0

sylvain231
Membre Relatif
Messages: 307
Enregistré le: 07 Avr 2020, 12:20

Re: calculer la distance d'un point avec une parabole

par sylvain231 » 24 Juin 2023, 20:00

je crois avoir trouvé d'où vient le problème le a de l'équation 0 = a * (cos(theta) * (x-sommet.x) - sin(theta) * (y-sommet.y))^2- sin(theta) * (x - sommet.x) - cos(theta) * (y - sommet.y) ne semble pas être le même que le a de l'équation y=ax^2 de Ben quelle est la correspondance SVP ?

sylvain231
Membre Relatif
Messages: 307
Enregistré le: 07 Avr 2020, 12:20

Re: calculer la distance d'un point avec une parabole

par sylvain231 » 24 Juin 2023, 20:51

non c'est pas cela c'est le même a voici le code corrigé et cette fois ça fonctionne :
Code: Tout sélectionner
double Parabole::distance(Point2d point,bool debug) {

    double X = point.x - sommet.x;
    double Y = point.y - sommet.y;

    double XX = X * cos(theta_radians) - Y * sin(theta_radians);
    double YY = X * sin(theta_radians) + Y * cos(theta_radians);
    X = XX; Y = YY;
    vector<double> res = resoutEquationTroisiemeDegre(2 * pow(a, 2),0, 1 - 2 * a * Y, -X,debug);
    double minimum = std::numeric_limits<double>::infinity();
    for (int k = 0; k < res.size(); k++) {//pour chaque solution complexe
        double t = res[k];
        double delta = pow(t - X, 2) + pow(a * pow(t, 2) - Y, 2);
        if (delta < minimum)
            minimum = delta;
    }
    return sqrt(minimum);
   
}


l'erreur venait de :

Code: Tout sélectionner
    double X = X * cos(theta_radians) - Y * sin(theta_radians);
    double Y = X * sin(theta_radians) + Y * cos(theta_radians);


en fait le Y suivant prenait le X tourné au lieu du X translaté maintenant ça marche youpi !

caillou1
Messages: 8
Enregistré le: 17 Juin 2023, 11:05

Re: calculer la distance d'un point avec une parabole

par caillou1 » 25 Juin 2023, 16:06

Bonjour,
Ce problème de distance minimale d'un point à une conique mérite quelques développements :
Dans l'équation de la parabole proposée, représente l'angle de son axe et de l'axe des ordonnées. On peut récupérer son foyer et sa directrice .
Le problème consiste à chercher les points de la parabole où la normale passe par donné. Dans les cas généraux, ces points ne sont pas constructibles à la règle et au compas.
C'est une question plus ou moins célèbre résolue par Apollonius il y a environ 2300 ans.
On construit l'hyperbole équilatère éponyme de la façon suivante :
- est la projection orthogonale de sur l'axe .
- centre de l'hyperbole est l'image de dans la translation de vecteur
-L'hyperbole d'Apollonius est entièrement déterminée par ses asymptotes (perpendiculaires en ) et le point .
- Ses intersections avec la parabole sont les solutions du problème de départ.
Dans la figure suivante, est extérieur à la parabole et il n'y a qu'un point d'intersection : la distance minimale est
Si est intérieur à la parabole, il y a en général 3 intersections. Il faut choisir la bonne qui donne la distance minimale cherchée.
Image

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 56 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