Inscription / Connexion Nouveau Sujet
Niveau exercices
Partager :

Répartir des points selon un écartement progressif sur un trait.

Posté par
Papy_Octet
01-07-11 à 07:10

Bonjour,
Pour construire un dessin (patron de tissage d'une dentelle), je voudrais pouvoir répartir un certain nombre de points sur un tracé et pour lesquels, la distance séparant un point de son suivant (le sens du déplacement est imposé lors du tracé dans le logiciel de dessin : Inkscape. Ce sens est peu important pour moi.) diminue (ou augmente) progressivement en fonction du nombre de points à placer sur le tracé et de la distance entre les deux points finaux.

J'explique avec un petit exemple ?

Je sélectionne un tracé dont je peux calculer la longueur.
Sur ce tracé, je décide de créer 5 "nœuds" (qui sont les extrémités des segments que je détermine sur ce tracé). (longueur du tracé, par exemple, 15 cm).
Je décide que la distance séparant le premier nœud du tracé (une de ses extrémités) du premier nœud ajouté est de 5 cm.
Je décide que la distance séparant le dernier noeud du tracé (une de ses extrémités) du dernier noeud ajouté est de 1 cm.
Je décide qu'il y aura 5 segments délimités sur le tracé.

Pour respecter ma demande, les distances entre chaque nœud consécutif variera de 5 cm entre le premier nœud terminal du tracé et le premier nœud ajouté, puis 4, puis 3, puis 2 et enfin 1 cm.

J'obtiens un genre de tracé logarithmique. Les points déterminés sur le tracé me servent de repère pour disposer d'autres éléments de dessin par la suite.

Comment calculer la distance entre chacun des nœuds (algorithme en Python) en connaissant :
- la longueur du trait de base (dans l'exemple : 15 cm de long),
- la distance qui sépare le premier nœud terminal (début) du tracé du premier nœud ajouté (dans l'exemple : 5 cm),
- la distance qui sépare le nœud terminal (fin) du tracé du dernier nœud ajouté (dans l'exemple : 1 cm),
- le nombre de segments déterminés sur le tracé (dans l'exemple : 5 segments).

Mes notions en math datent "un peu" ... 40 ans !

Vous pouvez m'aider un peu ?
Merci.

Posté par
plumemeteore
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 08:39

Bonjour Papy Octet.
Voici un schéma à adapter selon le langage d'algorithme ou de programmation :

Début
définir nbsegments sur entier; distA sur nombre; distZ sur nombre; actudist sur nombre
définir raison sur nombre; rang sur entier 'définit les variables et leur nature
premdist = 5 : derndist = 1 : nbsegments = 5
raison = (derndist - premdist) / (nbsegments - 1) 'variation de la distance à chaque étape
rang = 1 : actudist = 5
tantque rang nbsegments
afficher "rang : ", rang, "distance : ", actudist 'dans la première boucle affiche : rang : 1, distance : 5
rang = rang + 1
actudist = actudist + raison
fin tantque
Fin

Posté par
dpi
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 11:21

Bonjour,

C'est le genre de problème pour lequel les bases sont lointaines mais auquel il faut bien trouver une approche:

J'ai essayé avec 20 cm 7 noeuds dont le premier à  6 cm du début et le dernier à 2 de la fin

 Cliquez pour afficher

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 15:57

Bonjour,
Je viens de regarder les propositions.
Dans celle de plumemeteor, on ne semble pas utiliser la longueur du segment pour calculer les différents segments à déterminer. Or c'est cette longueur totale qui détermine la distance entre chaque nouveau nœud.

La proposition de dpi : je ne comprends pas "bricoler sur la courbe". Il s'agit de quelle courbe ?
Que représente l'équation "2+(6-2)n^2 ?
La variation de longueur des segments ne semble pas très "progressive" : 0.1 puis 0.13 puis 0.18 puis 0.65 et enfin 2.9.

Je dois conserver une progressivité linéaire dans l'allongement (raccourcissement) des segments successifs.
J'avais pensé à l'utilisation d'une équation de type y=ax+b pour calculer la variation de longueur de chaque segment depuis une des extrémités du tracé.
Mais là aussi, je patauge.

A+

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 16:41

Bonjour Papy_Octet,

Effectivement la longueur du segment n'est pas utile.
La variation de longueur des "sous-segments" vaut: (longueur du dernier sous-segment - longueur du premier) / (nombre de sous-segments-1).

Exemple:
5 noeuds, donc 4 sous-segments.
Le premier de longueur 3, le dernier de longueur 9.
Variation d'un sous segment au suivant (9-3)/(4-1) = 2.
Ce qui nous donne des distances: 3, 5, 7, 9.
Après seulement on calcule la longueur totale: ici 3+5+7+9 = 24.
La première longueur, la dernière et la longueur totale ne sont pas indépendants !

Un autre problème serait: on connait la longueur du segment initial, le nombre de noeuds et la longueur du premier sous-segment, calculer la variation de longueur d'un sous-segment au suivant.
Ici, c'est la dernière longueur qui dépend des données initiales.

Pas le temps d'approfondir, désolé.

Bon week-end !

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 16:51

Pour un peu illustrer ce vers quoi je voudrais arriver, j'ai fait un petit croquis de la courbe de progression des distances en prenant mon premier exemple.

Sur le graphique :
- l'axe vertical représente les 5 segments que je dois déterminer sur le tracé complet.
- l'axe horizontal est la longueur totale du tracé à diviser.
- la courbe noire détermine sur les axes vertical et horizontal des points (0, 0), (1, 5), (2, 9), (3, 12), (4, 14) et (5, 15).

Je devrais pouvoir déterminer l'équation de la courbe en fonction des différentes valeurs connues :
- la longueur du tracé à diviser,
- le nombre de segments à définir,
- la longueur du premier segment (le maximum de longueur)
- la longueur du dernier segment (le minimum de longueur).

J'ai envisagé le calcul du PGCD des deux longueurs extrêmes (min et max) puis calculé le nombre de PGCD contenus dans le tracé à diviser.
Je connais le nombre de PGCD de chacune des longueurs des segments Min et Max.

Mais ensuite ... que faire pour calculer les autres longueurs, donc pour répartir les PGCD restant pour respecter la progression "régulière".
J'ai travaillé avec une grille logarithmique pour les axes verticaux (distance entre les points successifs) et des lignes équidistantes horizontalement. Mais j'éprouve des difficultés pour obtenir la bonne longueur totale du tracé à diviser ainsi que les distances min et max et fonction du nombre de segments à déterminer.

Dans mon travail, je n'ai besoin que de connaître l'écartement entre les lignes verticales du graphique.

Répartir des points selon un écartement progressif sur un t

Posté par
dpi
re : Répartir des points selon un écartement progressif sur un t 01-07-11 à 17:05

à Papy_Octet

sans blank

J'ai vu que la forme de la courbe était proche
d'une hyperbole.
Comme vous avez l'espèrience des cas concrets,
j'ai voulu voir ce que donnerait d'après votre exemple
20 cm en 7 noeuds dont le premier à 6 cm et le dernier
à 2.
la courbe 2+[(6-2)/n²]  avec n =nombre de noeuds est
assez "réaliste" ,j'ai ensuité "bricolé" pour obtenir
6 +3.1+ 2.45+2.27+2.14+2.04+2 ce qui devrait être proche
de ce que vous pratiquez concrètement

Il ya des contraintes par exemple le longueur/nombre>distance
du dernier noeud de même la distance du premier ne doit pas être "disproportionnnée".

Cela étant,nous aurons certainement une réponse plus orthodoxe.

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 05-07-11 à 10:36

Bonjour Papy_Octet,

En inversant les axes de ton graphique, x = 1 f(1) = 5 , x = 2 f(2) = 9, etc, ta courbe a pour équation une fonction du second degré. C'est donc une parabole d'équation f(x) = -0.5 x2 + 5.5 x.

Concernant les valeurs connues, il y en à une de trop parmi les 4 que tu cite.

En effet, si tu connais la longueur du tracé à diviser, le nombre de segments et la longueur du premier segment, le dernier segment n'a qu'une longueur possible.
De même, comme disait plumemeteore, connaissant le nombre de segments, les longueurs du premier et du dernier, la longueur totale du tracé en découle.

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 05-07-11 à 15:49

Merci gloubi.
Mais une question à propos de ta suggestion :
Comment détermines-tu cette équation ?
Dans un souvenir très lointain, il me semble me rappeler d'une équation du type :
y = ax² + bx + c
Mais pour arriver à construire cette équation au départ de mes données ... c'est une toute autre histoire que je voudrais bien apprendre.

Mes notions de math sont terriblement lointaines (+- 40 ans ;-0 - j'ai 62 ans!) et je n'arrive pas à reproduire cette équation pour d'autres valeurs comme, par exemple, une longueur de 32 cm et un premier segment à 6.25 cm et un dernier à 1.87 cm.
Car il me semble que la forme de la courbe va changer si je modifie les paramètres comme indiqué même si elle reste parabolique.

Merci d'avance.

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 05-07-11 à 18:39

En d'autres termes, comment arrives-tu aux coefficients de x² et de x au départ de mes données ?
Pour rappel, la longueur du tracé = 15,
le premier segments = 5
le dernier segment = 1
le nombre de segments = 5

Quid avec :
longueur du tracé, longueur du premier segment, longueur du second segment et nombre de segments différents (avec éventuellement des valeurs décimales) ?

Merci.

Posté par
dpi
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 07:51

à Papy_Octet

Dans votre premier exemple 15 ( 5 4 3 2 1 )
la réponse semble évidente (mais progressivement içi est constant (-1)).

Dans celui que vous proposez 32(6.25 ????? 1.87 )
Combien de ? voulez vous pour que je teste ma formule ?
Je ne connais pas les autres contraintes sauf que l'écartement des points
doit regresser "progressivement" ce qui pour moi évite une constante.

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 10:38

Bonjour,

Papy_Octet,

Dans ton exemple:
f(1) = 5
f(2) = 9
f(3) = 12, etc

On cherche une équation de la forme ax2+bx+c=0;

pour x=1, a+b+c = 5
pour x=2, 4a+2b+c = 9
pour x=3, 9a+3b+c = 12

En soustrayant 2ème ligne-1ère ligne et 3ème ligne-2ème ligne, on a:

3a+b = 4
5a+b = 3

Système d'équations du premier degré dont la solution est a = -0.5 et b = 5.5, avec a+b+c = 5,,donc c = 0.

Citation :
Pour rappel, la longueur du tracé = 15,
le premier segments = 5
le dernier segment = 1
le nombre de segments = 5


Encore une fois, il y a une donnée de trop !
Si le premier segments = 5
le dernier segment = 1
le nombre de segments = 5
alors nécessairement longueur du tracé = 15

ou
si la longueur du tracé = 15,
le premier segments = 5
le nombre de segments = 5
alors nécessairement dernier segment = 1

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 10:50

Bonjour,
Disons 7 segments.
Les contraintes sont celles-là : la longueur du tracé, la longueur du 1° segment nouvellement créé sur le tracé, la longueur du dernier segment qui sera créé et le nombre de segments.
La longueur du tracé est un impératif auquel il n'est pas possible de se soustraire.

Mais je me demande s'il n'est pas possible de calculer les points en se basant uniquement sur la longueur du tracé, les longueurs des 1° et dernier segment. Dans ce cas, la dégressivité peut être déterminée par les dimensions des deux segments donnés et comme la longueur du tracé est définie, le nombre de segments à déterminer n'a qu'une solution.

Est-ce que la même opération est possible en connaissant la longueur du tracé, la taille des 1° et dernier segments et le nombre de segments, et dans ce cas, la longueur du tracé ET le nombre de segments doivent être respectés.

J'aimerais savoir comment, au départ de mes données, on peut arriver à construire l'équation. Dans mes cours, on me donne toujours l'équation à résoudre mais jamais comment, à partir d'un exemple concret, on peut trouver puis créer une équation qui vérifie les données fournies.

À plusieurs reprises sur différents sites, j'ai obtenu des réponses "toutes faites" et valables pour 1 exemple. Il m'a été suggéré des asymptotes, ou encore un système à 2 inconnues. Mais aucune méthode pour arriver à construire l'équation en elle-même.

J'ai également recherché du côté des suites logarithmiques mais là aussi, je me retrouve face au même problème : les équation sont données à résoudre et jamais un exemple concret à partir duquel il faut construire l'équation.

Je cherche ces infos car je dessine des patrons de tissage et je voudrais pouvoir tracer des canevas où le distances entre les fils de chaîne varient progressivement entre deux bornes (la longueur du tracé) puis répéter cette variation à l'envi et en l'inversant une fois sur deux. J'obtiens un tracé progressif sur une distance finie puis dégressif sur une même distance finie qui succède à la première et ainsi de suite.

Un tout grand merci pour votre aide.

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 11:36

Ok !

Le plus simple est de partir de la longueur du tracé, nombre de segments et longueur du premier segment.

Je prends un exemple, pour simplifier:
Tracé de 27 cm, 6 segments, 1er segment de 7 cm.

Alors:
1er segment: 7
2ème: 7+x
3ème: 7+2x
4ème: 7+3x
5ème: 7+4x
6ème: 7+5x (x peut être négatif)

On veut que la somme fasse 27.
6*7 + (1+2+3+4+5)x = 27
42-27 = -(1+2+3+4+5)x
15 = -(5*6/2)x  (somme des nombres de 1 a n = n(n+1)/2  )
15 = -15x, x donc x = -1

Vérification: 7+6+5+4+3+2 = 27
Evidemment, j'ai pris un exemple simple ou x est entier.

Généralisation:
L, la longueur du tracé
N, le nombre de segments
L1, longueur du 1er segment,
R, la raison de la progression

R = (N*L1 - L) / (-(N-1)*N/2)

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 12:01

Là, ça devient tout de suite plus clair pour moi.

Mais ôtez-moi d'un doute : pour calculer le raison de la progression, je peux également utiliser :
r = ( Un − a ) / ( n − 1 )
(= il faut retrancher au dernier terme le premier, puis diviser le résultat obtenu par le nombre de termes diminué de 1.) et donc ...

je dois utiliser les deux dimensions des 1° et dernier terme.

Merci pour tout.

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 14:40

Là, tu supposes connu les longueurs des 1er et dernier segment ainsi que le nombre de segments. Tu en déduis la raison de la progression.
Ensuite seulement tu peux calculer la longueur du tracé, qui était inconnue au départ.

Rappelle toi bien: si tu connais le nombre de segments et deux données parmi:
1/ longueur 1er segment
2/ longeur dernier segment
3/ longueur totale
alors seulement tu pourras calculer la 3éme donnée.

Posté par
dpi
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 15:27

Plus je regarde cet exercice,plus
il me fait penser à l'écartement dégressif en
perspective.(vous savez les carreaux et les lignes de fuite
vers l'horizon)

Je suis persuadé qu'une construction géomètrique répond
à ce problème .

Merci à gloubi et dommage que frenicle ne s'y soit pas penché..

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 06-07-11 à 16:19

Oui gloubi, mais je connais à chaque fois les 4 données : longueur du tracé, longueurs des 1° et dernier segment et nombre de segments.
C'est moi qui impose ces 4 contraintes pour mon travail. Et donc mon tracé et celui des segments doivent respecter ces contraintes.

Pour dpi, une construction géométrique ne me donne pas, par calcul (et programmation informatique) des repères millimétrés précis que je peux facilement utiliser.
Je dois placer des nœuds le long d'un tracé en respectant mes 4 contraintes et je dois connaître les distances qui séparent chacun des nouveaux nœuds pour pouvoir les dessiner ensuite sur le tracé (ligne droite ou courbe).

Merci pour vos aide oh combien précieuses pour un papy (encore bien vert ;-0 comme moi.).

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 07-07-11 à 07:16

Bonjour,
Je continue mes tortures neuronales

La "raison" de la progression me pose un problème dans son calcul ... à moins que je me goure encore un peu plus :

gloubi propose de calculer la raison avec l'équation (1):
R = (N*L1 - L) / (-(N-1)*N/2)

et dans des notes de cours, je trouve un calcul de raison pour suite arithmétique (2) :
R = ( L2 − L1 ) / ( N − 1 )  où L2 est la longueur du dernier segment.

Je pose :
L = 15
N = 5
L1 = 5
L2 = 1

(1): R = (5*5 - 15) / (-(5-1)*5/2) = 10/-10 = -1
(2): R = (1 - 5) / (5 - 1) = -4/4 = -1

Là, ça va, les deux raisons sont égales.
Mais ...

si je pose N = 3 ?
(1): R = (3*5 - 15) / (-(3-1)*3/2) = -0
(2): R = (1 - 5) / (3 - 1) = -4/2 = -2

et si je pose maintenant N = 5 et L2 = 2 ?

(1): R = (5*5 - 15) / (-(5-1)*5/2) = 10/-10 = -1
(2): R = (2 - 5) / (5 - 1) = -3/4 = -0.75

et avec N = 3 et L2 = 2?
(1): R = (3*5 - 15) / (-(3-1)*3/2) = -0
(2): R = (2 - 5) / (3 - 1) = -3/2 = -1.3333

????
Il y a comme un bug, non ?
Mais où ?

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 07-07-11 à 10:39

Bonjour  Papy_Octet,

Citation :
Je pose :
L = 15
N = 5
L1 = 5
L2 = 1

(OK ...)

si je pose N = 3 ?
(1): R = (3*5 - 15) / (-(3-1)*3/2) = -0
(2): R = (1 - 5) / (3 - 1) = -4/2 = -2

Dans le cas (1) tu utilises ma formule qui suppose connus N, L1 et L, mais pas L2. Une raison de 0 donne trois segments égaux, donc L2 = 5 (et non 1).

En (2), tu supposes connus L1, L2 et N. une raison de -2 donne L = 5+3+1 = 9 (et non 15).

Encore une fois, dans une progression arithmétique, parmi les 4 valeurs que tu proposes, seules 3 quelconques sont nécessaires au départ. La 4ème en découle.
Il n'y a pas de bug !

Bon, c'était juste pour faire avancer le schmilblick. Désolé de ne pas avoir de solution à te proposer.

Posté par
matovitch
re : Répartir des points selon un écartement progressif sur un t 07-07-11 à 13:49

Bonjour,
Je n'ai pas lu le topic en entier (flemme quand tu nous tiens) mais pour information : il y a trop de paramètres fixés pour pouvoir obtenir dans tout les cas une progression linéaire (parabolique c'est tout à fait faisable).

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 07-07-11 à 16:08

Oui gloubi,
Après coup, je me suis bien rendu compte qu'avec 3 segments, ça va être dur de faire progressif. Déjà avec 4 dans certaines conditions, c'est tout juste.

Au sujet des 4 variables imposées, j'ai eu, il y a une 20aine. d'années, un logiciel de dessin vectoriel qui proposait un tel outil où il était possible de choisir en les trois types de progression arithmétique, géométrique et de type logarithmique. Ces 4 paramètres étaient demandés et le résultat était extra. Mais malheureusement, ce logiciel n'a pas continué à évoluer et il a disparu depuis.
Et un tel outil, je ne l'ai plus jamais retrouvé dans la multitude de logiciels vectoriels que j'ai testés et utilisés.

C'était un outil vraiment utile pour dessiner, par exemple, des perspectives.


Pour matovitch,
il a été fait allusion à une équation de type y=ax²+bx+c et d'une parabole.
Dans ce cas, on quitte les suites arithmétiques et géométriques.
Mais je n'arrive pas à créer l'équation qui puisse répondre à mes souhaits, à savoir les 4 contraintes.
Je connais toujours ces 4 données et je ne recherche que les positions des nouveaux nœuds sur le tracé pour créer le nombre de segments imposés. C'est soit une distance entre chaque nœud soit la distance à laquelle chaque nœud se trouve depuis le départ du tracé.

A+

Posté par
gloubi
re : Répartir des points selon un écartement progressif sur un t 08-07-11 à 15:42

Bonjour Papy_Octet,

Une solution possible en utilisant les 4 valeurs que tu souhaites, mais qui ne donne pas à proprement parler une progression.

Tu veux N segments de longueur totale L, le premier de longueur L1, le dernier LN.

Commence par numéroter tes points de 0 à N en leur associant leurs coordonnes.

Point 0: abscisse: 0
Point 1: abscisse: L1

Point N-1: abscisse L-LN
Point N: abscisse L

On cherche ensuite une courbe qui à x = numéro du point associe y = coordonnée du point.
Une équation du 3ème degré correspond parfaitement.

Comme x = 0 est associée à une coordonnée nulle, l'équation recherchée est de la forme y = ax3+bx2+cx

On obtient le système suivant;

a3+b2+c = L1
a(N-1)3+b(N-1)2+c(N-1) = L-LN
aN3+bN2+cN = L

Un exemple simple: tracé de 4 segments de longueur 6, 1er segment de longueur 3 et dernier de longueur 1.

Point 0: 0
point 1: 3
point 2: ???
point 3: 6-1 = 5
point 4: 6

On a le système:
13a+12b+c = 3 (point 1)
33a+32b+3c = 5 (point 3)
43a+42b+ac = 6 (point 4)

soit
a+b+c = 3
27a+9b+3c = 5
64a +16b+4c = 6

qui a pour solution:
a = 1/6
b = -4/3
c = 25/6

Ce qui nous donne l'abscisse du point 2: 8/6 +4*(-4/3)+2*25/6 = 17/3

Voilà. J"arrête ici pour aujourd'hui.  

Posté par
Papy_Octet
re : Répartir des points selon un écartement progressif sur un t 08-07-11 à 18:42

Bonsoir gloubi,
Il est tout de même effarent de voir comment une petite question de math qui a l'air toute simple au départ peut engendrer un tel florilège de propositions.
Merci pour ces recherches.
A+



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !