Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 48

Normale à une courbe définie par des points continus



  1. #1
    zedrummer

    Normale à une courbe définie par des points continus

    Bonjour
    J'ai une courbe continue sans équation (un fichier image) et sans angle (que des formes arrondies quoi).
    Sans équation, je n'ai pas de dérivée, donc pas de tangente et, par conséquent, pas de normale facile à trouver.
    Sachant que je connais les points adjacents, chaque point ayant la position du précédent et le suivant et donc de proche en proche de ceux autour, y a-t-il une méthode connue plus fiable que faire une normale à partir du point précédent et du point suivant, SVP?
    Merci
    David

    -----


  2. Publicité
  3. #2
    minushabens

    Re : Normale à une courbe définie par des points continus

    Tu pourrais par exemple échantillonner le long te ta courbe un certain nombre de points et interpoler localement la courbe par une spline cubique. Puisque c'est juste un polynôme tu peux calculer la normale en chaque point de façon exacte. Elle va dépendre de ton échantillonnage, s'il est assez fin (mais pas trop fin) ça devrait bien se passer. Je suppose que tu peux faire varier cet échantillonnage et choisir le pas optimal, par une procédure de type variation croisée.

  4. #3
    goaoute

    Re : Normale à une courbe définie par des points continus

    L'estimation: "point avant point après" paraît la plus pertinente
    Si tu élargis tu ne peux qu'introduire des biais
    Après reste à savoir ce que tu veux et pourquoi.

  5. #4
    zedrummer

    Re : Normale à une courbe définie par des points continus

    @minushabens: Echantillonner le long de la courbe... Euh ... Ça m'a l'air hautement compliqué pour le personnage un peu limité que je suis.

    @goaoute: Sachant que ce sont des points qui se touchent (autorisé en diagonale), ça va faire peu de possibilités d'angles différents et donc très imprécis, non? Genre ça x4 (avec des possibilités qui se recoupent):
    Pièce jointe 392278
    En fait, je me suis mis récemment à la lutherie amateure (très amateure) et j'ai commencé à fabriquer une contrebasse (étroite, mais quand même avec une caisse). Du coup, j'ai dû utiliser un ciseau à bois pour voûter la table et le fond, et, comment dire... c'est juste un boulot de dingue pour un résultat qui a l'air de résonner (j'ai fini la table, pas encore le fond et j'en suis très largement à 40h rien que pour cette étape du voûtage des 2 surfaces de la caisse), mais qui est quand même très imparfait.
    Je me suis donc lancé dans un programme qui me calculerait tout seul des lignes de niveaux à partir de la forme de l'instrument (forme que j'ai trouvée sur le net), en ferait une image que je pourrais projeter sur le bois en taille réelle et que je pourrais ensuite voûter à la défonceuse de manière bien plus rapide et surtout bien plus précise.
    Dernière modification par zedrummer ; 21/07/2019 à 16h17.

  6. #5
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Du coup, je me demandais pas s'il n'y avait pas une amélioration en utilisant par exemple une première normale issue du point avant et du point après puis une seconde normale issue du point 2 fois avant et de celui 2 fois après et de faire une moyenne (pondérée peut-être) des 2 pour un résultat plus fiable, tu penses que non?

  7. A voir en vidéo sur Futura
  8. #6
    ansset

    Re : Normale à une courbe définie par des points continus

    bjr,
    malheureusement ta pièce jointe n'est pas lisible.
    il est donc difficile de te proposer une méthode assez ad-hoc en fonction de tes mesures.
    peux tu réessayer autrement ( un tableau excel par exemple ? )
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  9. Publicité
  10. #7
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Pardon, ce ne sont pas des mesures mais des positions entre le point et ses 2 points autour:Screenshot_22.png

  11. #8
    ansset

    Re : Normale à une courbe définie par des points continus

    comment on lit ça ?????
    une traduction est nécessaire.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  12. #9
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Bah juste un point (au milieu) et ses 2 points adjacents. Les différentes configurations possibles (il en manque surement, mais il n'y en as pas tant). Et du coup le nombre d'angles différents pour faire une normale à partir des 2 points adjacents est assez faible. Dans le premier cas, comme l'écart entre les 2 points adjacents est (2,0), la normale est (0,2) ou (0,-2), dans le 2° cas, l'écart est (2,-1), donc la normale est (1,2) ou (-1,-2), etc... (Que je peux rendre unitaire ensuite)
    Je réagis par rapport à la réponse de @goaoute qui me dit que l'utilisation du précédent/suivant semble être la méthode la plus appropriée, c'est juste pour m'assurer qu'on parle bien de la même méthode.

  13. #10
    pm42

    Re : Normale à une courbe définie par des points continus

    Citation Envoyé par zedrummer Voir le message
    Je réagis par rapport à la réponse de @goaoute qui me dit que l'utilisation du précédent/suivant semble être la méthode la plus appropriée, c'est juste pour m'assurer qu'on parle bien de la même méthode.
    Et tu penses que ça va marcher ? Tu vas avoir un nombre limité de cas et ta normale qui va sauter d'une valeur à une autre...


    Ce que disait minushabens semble largement plus approprié.

  14. #11
    CM63

    Re : Normale à une courbe définie par des points continus

    Oui ou une régression sur 3 points et la normale à cette droite.

  15. #12
    zedrummer

    Re : Normale à une courbe définie par des points continus

    @pm42 : Ben non, c'est ce que je dis dans mon tout premier message, que cette méthode me semble très (trop) approximative, c'est pour cela que je souhaitais introduire les points encore autour, mais bon, je ne suis pas assez expert pour dire qui a tort de qui a raison.
    C'est juste que la méthode de minushabens qui est sans doute très bien me semble au delà de mes compétences. Mais si c'est compréhensible pour quelqu'un comme moi, je suis preneur.

    @CM63 : La régression, c'est une une droite approximant un nuage de points, c'est ça? Comme je le disais au début, je peux même avoir accès aux points encore après ou avant.

    Je peux même à partir d'un logiciel de dessin comme Inkscape redessiner avec des courbes de bézier cette forme qui me plait, seulement je doute qu'on puisse ensuite toujours avec Inkscape récupérer les normales ni les équations des courbes utilisées.

  16. Publicité
  17. #13
    pm42

    Re : Normale à une courbe définie par des points continus

    Citation Envoyé par zedrummer Voir le message
    @pm42 : Ben non, c'est ce que je dis dans mon tout premier message, que cette méthode me semble très (trop) approximative, c'est pour cela que je souhaitais introduire les points encore autour, mais bon, je ne suis pas assez expert pour dire qui a tort de qui a raison.
    C'est juste que la méthode de minushabens qui est sans doute très bien me semble au delà de mes compétences. Mais si c'est compréhensible pour quelqu'un comme moi, je suis preneur.
    Ta courbe ne revient jamais en arrière ? Elle est du type y=f(x), ce n'est pas une paramétrique ?
    Si oui, la méthode de minushabens n'est pas forcément compliquée à implémenter.

    Se pose aussi la question du langage que tu vas utiliser. Dans certains, il y a tout ce qu'il faut. Un exemple en anglais ici : https://stackoverflow.com/questions/...l-regression-u

  18. #14
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Elle ne revient jamais en arrière, elle n'est pas de la forme y=f(x) puisque c'est une forme circulaire (contour d'un instrument de musique). Je fourni en fichier joint ce à quoi ça ressemble une fois un tout petit peu arrangé (couleurs) pour mon utilisation. C'est la ligne intérieure bleue qui est utilisée (ça ne se voit pas très bien sur l'image qu'elle est bleue).

    Je sais quel langage je vais utiliser, c'est du C (pas ++). Le programme est déjà lancé, il prend le fichier image fourni et le traite de façon à ce qu'il ne reste qu'une ligne d'épaisseur 1 pour le contour, car un fichier image fourni souvent une ligne d'épaisseur supérieure.

    violoncelle.jpg

  19. #15
    CM63

    Re : Normale à une courbe définie par des points continus

    Ok, c'est une courbe fermée, ce n'est donc pas représentable par y=f(x) mais plutôt x(t),y(t) où t est un paramètre. Et comme c'est discrétisé on a plutôt:

    x(i),y(i), i=1 à n où n est le nombre de points.

    Et donc tu peux très bien avoir "le point précédent" et "le point suivant", il suffit de dire par convention que le point qui "précède" x(1),y(1) est le point x(N),y(N), et le point qui "suit" x(N),y(N) est le point x(1),x(1) . Par programme c'est élémentaire.

    Et donc (pour ne parler que de la méthode que j'ai proposée) tu peux très bien faire une régression sur 3 points et prendre la normale.

    C'est applicable aussi pour les méthodes proposées par les collègues.

    PS : à la réflexion, il vaudrait mieux prendre une spline sur 5 points effectivement, sinon ça risque de "sauter" du fait que ce sont des points discrets, des pixels.
    Dernière modification par Antoane ; 22/07/2019 à 10h45. Motif: Orthographe, à la demande de l'auteur

  20. #16
    zedrummer

    Re : Normale à une courbe définie par des points continus

    D'accord, ça, je le comprends facilement. Donc à supposer pour faire simple que mon point central est P3(x3,y3), avec mes 5 Pi(xi,yi) (i=1 à 5), comment je fais pour trouver la spline et du coup la normale, SVP?
    Merci beaucoup de l'aide

  21. #17
    CM63

    Re : Normale à une courbe définie par des points continus

    Oui, milles excuses, je n'ai pas compris que au départ tes points ne sont pas rangés, donc oublie ce que j'ai dit, effectivement ce n'est pas si simple, mille excuses, j'y réfléchirai ce soir, je n'ai plus le temps, là, à plus.

  22. #18
    ansset

    Re : Normale à une courbe définie par des points continus

    Citation Envoyé par zedrummer Voir le message
    Je fourni en fichier joint ce à quoi ça ressemble une fois un tout petit peu arrangé (couleurs) pour mon utilisation. C'est la ligne intérieure bleue qui est utilisée (ça ne se voit pas très bien sur l'image qu'elle est bleue).

    Je sais quel langage je vais utiliser, c'est du C (pas ++). Le programme est déjà lancé, il prend le fichier image fourni et le traite de façon à ce qu'il ne reste qu'une ligne d'épaisseur 1 pour le contour, car un fichier image fourni souvent une ligne d'épaisseur supérieure.
    Ce schéma m'est bien plus clair que ton tableau précédent
    même si la façon dont tu l'as obtenu (*) reste obscure pour moi.
    as tu un tableur excel d'un nb suffisant de points de ta courbe ?
    (*) ou bien est ce un dessin théorique de ce que tu souhaites obtenir.?
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  23. Publicité
  24. #19
    zedrummer

    Re : Normale à une courbe définie par des points continus

    En fait ça peut être n'importe quelle image trouvée sur le net pour me donner une forme d'instrument qui me plait. Je peux (dois la plupart du temps) la retravailler pour obtenir quelque chose de plus haute résolution.

    En l'occurrence, ici j'ai utilisé Inkscape qui permet de dessiner des formes à l'aide de courbes de Bézier.
    Pour l'exemple, j'ai fabriqué une forme originale d'instrument et à l'aide de plusieurs courbes de Bézier (évidemment pas une seule pour la totalité de la forme), j'ai tracé la courbe bleue intérieure qui me permettra de définir la zone à voûter selon une courbe définie par une fonction (mais ça n'est pas le sujet ici) et le programme me calculera des courbes de niveaux concentriques. Il en fera une image que je pourrai en taille réelle soit imprimer et reporter sur le bois, soit juste projeter sur le bois pour retracer à la main, ceci afin de faire mes courbes intérieures et extérieures à la défonceuse en définissant la profondeur de défonce en fonction des courbes de niveaux. Les couleurs de fond blanche et verte et de droite bleue et noire permettent au programme de savoir sur quoi il doit travailler.
    Le problème c'est qu'il est évidemment impossible de savoir à partir d'Inkscape quelle est la normale de la courbe, alors je cherche un biais pour, à partir d'une image qui peut être assez précise (dans l'exemple donné, le BMP fait 1896 par 3278) computer une normale valable (pas besoin d'être hyper précise, mais plus que la méthode du point précédent/suivant, j'aurais tendance à penser).

    Voilà

  25. #20
    ansset

    Re : Normale à une courbe définie par des points continus

    Grrrrr , je m'en veux de ne réussir à comprendre ce que tu veux faire.
    Citation Envoyé par zedrummer Voir le message
    ..... et le programme me calculera des courbes de niveaux concentriques. Il en fera une image que je pourrai en taille réelle soit imprimer et reporter sur le bois, soit juste projeter sur le bois pour retracer à la main, ceci afin de faire mes courbes intérieures et extérieures à la défonceuse en définissant la profondeur de défonce en fonction des courbes de niveaux.
    est-ce ce programme que tu cherches à réaliser.?
    à savoir un ensemble de courbes de niveaux concentriques à partir de données d'un modèle.
    si c'est le cas, il te faut un maillage de l'ensemble de la surface ( en x,y,z....) pour en déduire les courbes de niveaux.
    à moins que tu ai déjà ces courbes à disposition.
    merci de m'éclairer.
    Cdt

    ps: plutôt que des splines , on risque d'avoir besoin des nurbs.
    Dernière modification par ansset ; 22/07/2019 à 11h31.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  26. #21
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Alors ma logique:
    - J'ai une courbe de voûte de la forme y=f(x) qui a une courbure qui me va bien entre x=0 (y=0) et x=1 (y~1). Pour l'adapter à mon cas, j'entre une profondeur maximale de voûte que je multiplie au y et je ramène la valeur de x entre 0 et 1 en divisant ce x par la distance totale parcourue.
    - Je pense donc prendre la normale (celle intérieure au contour bleu), puis avec un algorithme type Bresenham, aller trouver le point du contour opposé selon cette normale, calculer le point milieu et appliquer la courbe ci-dessus entre le point initial et le point milieu. Forcément, il y aura plusieurs passages sur les mêmes points, et je pense garder la valeur minimale des différents passages.
    Dernière modification par zedrummer ; 22/07/2019 à 13h07.

  27. #22
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Voici ma courbe:

    Screenshot_2.png

  28. #23
    Jiav

    Re : Normale à une courbe définie par des points continus

    Pourquoi ne pas utiliser l'image de départ pour faire les courbes de niveau? (par copié/collé suivi d'une diminution de la taille de la forme)
    L'été vient.

  29. #24
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Je pense que ça marche si la forme est un ovale, mais si il peut y avoir des petites "oreilles", ça ne marche plus, si ?

  30. Publicité
  31. #25
    Jiav

    Re : Normale à une courbe définie par des points continus

    La forme intérieure que tu montres au message #14 ne contient que des courbes. Ce n'est pas elle que tu cherches à reproduire?
    L'été vient.

  32. #26
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Si mais c'est un exemple, une forme avec des "oreilles" n'est pas exclue dans un vrai projet.

  33. #27
    ansset

    Re : Normale à une courbe définie par des points continus

    encore une fois, je cherche à comprendre.
    ta ligne bleue semble correspondre au point de départ du "bombage" intérieur de l'instrument.
    est ce cela ?
    si oui, tu cherches à reconstruire les différentes courbes de niveaux internes, chacune correspondant à "iso" identique.
    et tu prendrais pour modèle théorique la courbe présentée au post 22.
    avec deux paramètres ( les points de debut et fin : tes x )
    et l'amplitude maximale qui n'est jamais 1 mais varie en fonction de la direction prise.

    est ce que c'est bien ça, avant que je prolonge ????
    merci.
    Dernière modification par ansset ; 22/07/2019 à 20h52.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  34. #28
    zedrummer

    Re : Normale à une courbe définie par des points continus

    Oui
    Les points de début sont sur le contour bleu, le point de fin est le fameux point milieu entre ce point de début et son opposé aussi sur la courbe bleue selon le vecteur normal que je cherche.
    Non l'amplitude max est la même partout pour un seul instrument, c'est juste paramétrable dans le programme d'un instrument à l'autre.
    C'est moi qui dis merci.

  35. #29
    Jiav

    Re : Normale à une courbe définie par des points continus

    Citation Envoyé par zedrummer Voir le message
    Si mais c'est un exemple, une forme avec des "oreilles" n'est pas exclue dans un vrai projet.
    Bon alors faisons ça général: ma compréhension de ton problème est que tu as une image sans avoir les coordonnées des points sur cette image. Dans ce cas, soit tu échantillonnes à la main, soit tu fais ou utilises un sous-programme de numérisation, soit tu t'en passes en n'utilisant que des manipulations affectant l'image en entier. Les deux premiers sont chiants ou hors de portée (tu le veux en C, en prévenant que tu n'es pas un cador en programmation). Le dernier est faisable tout simplement en faisant une série de copié/collé selon des paramètres bien choisis. Dans tous les cas tu choisis un centre et tu trouve sa position dans l'image, puis tu fais tes copié/collé avec un facteur de réduction choisi, en prenant quelques précautions:
    -si tu as des détails que tu ne veux pas reproduire, il faut commencer par tracer un intérieur à la main comme tu l'as fait en #14
    -si ta forme est plus haute que large ou le contraire, il faut que tu décides si tu veux utiliser un facteur de réduction commun ou différent pour la hauteur versus largeur (tu peux aussi redéfinir les axes si tu veux un facteur de réduction diagonal)
    -si tes courbes de niveau doivent être d'espacement constant plutôt que proportionnellement constant, alors il faut que tu calcules les hauteurs et largeurs cibles pour qu'une réduction corresponde.
    -si ta forme est complexe, tu peux vouloir faire un collage avec éventuellement plusieurs petites zones dans une plus grande
    Les deux derniers cas impliquent plus de calcul et probablement quelques essais/erreurs.
    L'été vient.

  36. #30
    goaoute

    Re : Normale à une courbe définie par des points continus

    A la rigueur quatre points, mais si tu prends plus, que se passera t-il quand tu approchera des angles vifs, (sauf à éliminer les points non cohérents, et où placer la cohérence) ?
    Certes dans les méthodes citées, les points non cohérents ne compterons que pour x% dans le calcule, mais ça restera un biais.
    Dernière modification par goaoute ; 23/07/2019 à 07h26.

Sur le même thème :

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. richesses et courbe normale
    Par Christian Arnaud dans le forum Mathématiques du supérieur
    Réponses: 24
    Dernier message: 23/03/2019, 05h52
  2. Trouver l'équation d'une courbe définie géométriquement
    Par Gandhi33 dans le forum Mathématiques du supérieur
    Réponses: 11
    Dernier message: 09/10/2016, 11h37
  3. Normale de 2 points ?
    Par roipoussiere dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 12/03/2016, 11h42
  4. Tracer la courbe d'une loi normale avec R.
    Par Falindor dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 05/04/2010, 12h06
  5. Paramétrisation normale d'une courbe
    Par Bleyblue dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 06/07/2006, 20h28