633 commentaires
ourea

Non, la courbure, c'est la dérivée seconde (la variation de la pente). C'est l'inverse du rayon du cercle osculateur.

Grande courbure = petit rayon de courbure.

ourea
( Modifié )

Oui, ça m'a l'air d'être la même chose (et les résultats sont cohérents). L'avantage de ce document est qu'il est formulé directement pour le problème posé...

Il traite les points 1 et 2, qui à mon avis sont les briques essentielles, et la suite découle mieux que ce que j'ai décris ci-dessus.

Je me baserais donc sur ce document.

Il te faudra quand même une mesure d'erreur pour savoir combien de points utiliser.

(Par contre, à relire, le cas d'un arc d'ellipse est un peu plus compliqué que ce qu'il explique, car la courbure ne varie pas forcément de façon monotone. Je pense que la solution au point 2 se rapproche alors de ce que j'ai décris ailleurs).

PS. Je t'aiderais bien avec des formules ou du pseudocode, mais je ne suis vraiment pas dispo ces jours-ci.

ourea
( Modifié )

Boris Beaulant

Je repars de ce commentaire : lairdubois.fr/...entaires/368855. C'est en fait l'expression inverse (le rayon de courbure) qu'il faut utiliser.

Pour découper ton arc d'ellipse en segments de longueur variant en fonction du rayon de courbure (arcs plus petits là où le rayon de courbure est plus petit), et le faire de manière exacte, c'est-à-dire en pouvant obtenir ces arcs directement à partir de leur nombre sans avoir à appliquer de corrections a posteriori, voici la démarche en pratique :

  • Calculer et tabuler le rayon de courbure le long de l'arc d'ellipse. Tu le découpes par exemple en 100 pas angulaires, et tu enregistres tout ça dans deux tableaux (un pour l'angle et un pour le rayon de courbure). Tu as donc accès à la valeur de la courbure en tout point (via des interpolations entre les points).

  • Calculer l'intégrale du rayon de courbure le long du profil. Pour ça, tu crées un autre tableau (rayon de courbure intégré). Les angles sont les mêmes que précédemment. L'intégrale du rayon de courbure est obtenue en copiant le tableau "rayons de courbure", puis en faisant simplement un "for (i = 1; i < N; i++) c[i + 1] += c[i];" (pour une indexation 0). En d'autres termes, pour chaque entrée du tableau (excepté la première), tu ajoutes la valeur de l'entrée précédente (dans le sens ascendant, pour un effet cumulatif). Tu peux ensuite normaliser les valeurs par rapport à la dernière : le tableau contient alors des valeurs qui varient entre 0 et 1.
    (en fait, ça démarre à un peu plus que 0)

  • Il faudra utiliser la fonction inverse. Donc, conceptuellement, tu considères alors le second tableau (les rayons intégrés) comme ton axe des x et le premier (l'angle) comme l'axe des y.

Supposons que tu veuilles 11 points le long de l'arc (en comptant les points aux extrémités). Comment faire ?

Tu considères les valeurs 0, 0.1, 0.2, ..., 0.9, 1 (tu peux aussi omettre 0 et 1, qui correspondent aux extrémités de l'arc d'ellipse). Tu recherches la case correspondante dans le tableau "rayons intégrés" et tu lis la valeur dans la même case du tableau "angle".

(Pour peaufiner, plutôt que de prendre la valeur de la case, une interpolation (linéaire) serait bienvenue...)

ourea

Et ben voilà, la grande classe ! 😉

ourea
( Modifié )

Et il n'y a pas forcément de point sur les extremums. Il faudrait presque toujours faire les calcul sur l'ellipse complète et extraire les points contenus sur l'arc...

Il faut construire les tableaux (initiaux) sur l'arc d'ellipse et non sur l'ellipse complète.
Tu connais les points aux extrêmes. Pour n points intermédiaires, tu considères les valeurs i/(n+1), i variant de 1 à n. Cela te donne une distribution adéquate de points sur l'arc.
(Les extrêmes correspondent à i=0 et n+1, mais tu connais déjà les positions...)

Mais dans cette façon de faire, il va y avoir un nombre fixe de points quelque soit la longueur de l'arc.

Savoir combien il faut de points est un autre problème (mathématique). Cela dépend de la manière dont tu définis les arcs de cercle et l'erreur que tu acceptes sur l'approximation de l'arc d'ellipse en arcs de cercle.

EDIT Au sujet du nombre de points, tu peux aussi (peut-être) l'estimer en fonction des valeurs du rayon de courbure le long de l'arc. Suppose que tu appliques cela à un cercle. Le rayon de courbure sera toujours la même et donc n=0... (Par contre, c'est bien un problème différent de celui de savoir comment positionner les points.)

ourea
( Modifié )

Effectivement, ça n'est pas une contrainte prise en compte.
Dans ce cas, il faut discrétiser l'ellipse entière avec un nombre de points multiple de 4, prendre la discrétisation sur l'arc donné et ajouter les points aux extrémité de l'arc.

PS. (Juste pour info) Sais-tu "détecter" les formes complémentaires ?

ourea
( Modifié )

OK, merci.

Donc, selon la méthode ci-dessus et avec un nombre de points multiple de 4, les points seront distribués proportionnellement au rayon de courbure le long de l'arc, sauf au début et à la fin, où il seront plus courts, et il y aura des points aux extremums.

A traiter les objets indépendamment, je pense qu'on ne peut pas faire mieux pour respecter la contrainte de complémentarité.

PS. Je vois qu'il y a un petit écart sur les extremums le cas à 36 points sur ton image ci-dessus, ce qui ne devrait pas être le cas. Il doit y avoir une imperfection quelque part...

ourea
( Modifié )

Boris Beaulant C'est une histoire de discrétisation, d'intégration et d'interpolation, le diable étant dans les détails... Je pourrai te regarder ça sous quelques jours si tu veux.

ourea

Boris Beaulant Effectivement, j'y pensais aussi.

Sinon, il faudrait faire attention à l'intégration, etc., ou alors essayer d'intégrer analytiquement, ce qui réglerait le problème aussi.

Mais la solution 1 est la plus simple.

ourea
( Modifié )

Oui, ensuite il y a le choix pour la construction des arcs de cercle, et la méthode à 3 points semble appropriée. Il est certainement suboptimal de choisir le point central, car cela ne minimise pas forcément l'écart entre l'arc d'ellipse et l'arc de cercle, mais je ne sais pas s'il est facilement envisageable de faire mieux, et on serait vraiment dans le raffinement du raffinement...

ourea
( Modifié )

Il me semble très important que les arcs de cercles soient tangents entre eux, au risque de voir apparaitre des bourrelets ou des ondulations. (les amateurs de CAO auront en tête le zébrage discontinu des surfaces)
Autrement dit, que le point de connexion entre deux arcs soit alignés avec les centre des ces mêmes arcs.

Je pense que c'était la suggestion de benjams et que ça n'est pas possible... Voir la discussion ici.

Sur ton dessin, les deux extrémités d'un arc (qui sont contraints d'appartenir à l'ellipse) sont probablement à une distance différente du "centre".

ourea
( Modifié )

David Marmilloud Sur ton schéma, le premier arc est tangent à l'ellipse à l'intersection avec l'axe des abscisses (par construction), mais (étant donné les discussions précédentes) je pense qu'il ne l'est pas en son autre extrémité : on peut choisir le rayon du cercle pour intersecter l'ellipse où on veut, mais l'ellipse et le cercle ne sont pas tangents en cette intersection.

Dès lors, ça ne fonctionne plus...

ourea
( Modifié )

Boris Beaulant Ca, c'est possible (voir ci-dessous). Le problème est que tout se superpose sur l'image de David Marmilloud.

David Marmilloud On voir bien sur l'image ci-dessous que la tangente n'est pas la même au second point d'intersection (pour illustrer mon propos ci-dessus). Si le rayon du cercle est tel que le cercle est intérieur à l'ellipse, il n'y a pas de seconde intersection, mais dès lors que le cercle est (en partie) extérieur, il n'intersecte pas l'ellipse avec la même tangente...

ourea
( Modifié )

Je ne comprends pas tout à la représentation graphique, mais lorsque l'ellipse est très aplatie, le centre du cercle approchant part à l'infini, d'où les NaN. Ca doit se voir dans les équations (avec un dénominateur qui s'annule, probablement ?).

Peut-être faudrait-il un test quelque part pour approximer par un segment de droite plutôt qu'un cercle dans ce cas-là ? (même avec une autre définition d'arc de cercle, le problème restera sûrement le même...)

A partir du rapport entre la longueur de l'arc et le rayon de courbure, tu peux choisir entre un segment de droite et un arc de cercle.

ourea

L'intérêt est d'avoir un nombre d'objets limités. Il faudrait avoir un nombre de segments supérieur d'un facteur 10 ou 100 au nombre d'arcs de cercle pour atteindre le même niveau d'approximation (en terme de distance à l'ellipse), et la courbure des arcs de cercle est intéressante à avoir...

ourea

Jean-Claude Di Fazio Oui, idée à abandonner ici je pense...

par jubois il y a 10 mois
ourea
( Modifié )

Une sacrée œuvre de plus ! Magnifique !

ourea

Je vote aussi pour cette solution. Même en phonique tu y gagneras (si tu as des machines).

par jubois il y a 10 mois
ourea
( Modifié )

Sacrée œuvre ! Faut avoir la passion du dodecaedre là... 😲 😉

par EricFd il y a 5 ans
ourea
( Modifié )

Conseil si tu le gardes en intérieur : remplace au plus vite la chaussette par une cartouche filtrante. Ca coûte un gros billet, mais c'est le jour et la nuit en termes de filtration (ou la nuit et le jour, plutôt !).

Sinon, c'est bien qu'il ait une arrivée par le haut. Mon AF-14 a une arrivée par le bas, et avec un réseau au plafond il faut faire un 180° du coup...

ourea
( Modifié )

C'est la solution idéale, ça fait rêver... Pas de problèmes de bruit à l'extérieur ?

ourea
( Modifié )

Boris Beaulant C'est entre autre l'effet du pas constant en angle.

A mon sens, tu ne peux pas te passer du calcul de la courbure locale pour pouvoir mettre plus de point là où la courbure est la plus grande d'emblée (étapes 1 et 2 de ma réponse).

Une fois que tu as les valeurs des courbures (ou, mieux, l'expression de la courbure en fonction de l'angle de coordonnée polaire), il est possible de répartir les points selon ce profil de valeurs.

Une méthode (pas tout à fait directe) et de traiter la courbure comme une densité de probabilité (c), l'intégrer (C), prendre l'inverse (C^-1), et ensuite, pour N points, tu calcules la valeur de C^-1 à intervalles réguliers.
C'est la méthode de la transformée inverse mais avec un échantillonnage régulier plutôt qu'aléatoire.
Tu noteras qu'il est possible de faire du tout analytique ou du numérique, en tabulant les valeurs.

Sinon, tu demandes "How to distribute points on an ellipse so that the point density matches the local curvature?" à ChatGPT, et il te dit à peu près pareil... 😉

ourea

Désolé, c'est surtout que je me limite à donner les grandes lignes pour voir s'il y a un intérêt, mais je peux mieux développer (je le ferai sous ma réponse). Après la mise en pratique peut aussi réserver des surprises...

Pour le reste, je ne crois de toute façon pas que l'on apprenne ça au lycée 😉

ourea

Boris Beaulant Que représente la vague, en fait ?

ourea
( Modifié )

👍

Dans l'approche décrite plus haut, reste plus qu'à intégrer 😕... autant dire que je procéderais numériquement.

ourea
( Modifié )

Mais est-il possible d'obtenir une discrétisation à dérivée continue approximant une ellipse par des arcs de cercle ?

Deux cercles approchant voisins vont forcément s'intersecter en un point où la dérivée est non continue, non ?

Est-ce que je rate quelque chose ?

Sinon, c'est intéressant.

ourea
( Modifié )

benjams Merci pour le complément. Ca m'a l'air élégant.

Une chose qui me trouble : si je considère les 4 points d'intersection de l'ellipse avec ses axes et que j'essaie d'appliquer cela, ça ne marche pas : les normales se croisent au centre, et il n'existe pas de cercle ayant ce centre et passant par les points d'intersection (étant donné qu'ils ne sont pas à la même distance du centre).
Je pense qu'il en est de même pour toute paire arbitraire de points sur l'ellipse (notamment, des points plus proches, comme dans l'application concernée).

Du coup, comment on traite ça ? On approxime ? Ne perd-t-on pas alors la continuité de la dérivée première ?

ourea
( Modifié )

1ère étape : exprimer le problème dans le repère de l'ellipse (axes coïncidant à x et y : a = 0, C = (0,0)). Au moins dans un premier temps, il vaut mieux chercher à résoudre le problème dans ce repère et appliquer les transformations adéquates avant et après 😉.

ourea
( Modifié )

Avant de résoudre analytiquement un problème mathématique, quand on a l'habitude, on commence par l'exprimer dans sa forme la plus simple. Ca fait partie du "processus" de résolution...

Tu ne verras jamais un mathématicien traiter le problème (ou y réfléchir) directement sous cette forme.

D’où ma suggestion à Boris Beaulant...

ourea

Ca permet de réduire le nombre de variables et supprimer les couplage avant de commencer à réfléchir.

Sinon Kentaro, je peux encore en placer une sans que tu viennes m'emmerder ? T'as que ça à faire de tes journées ?

ourea
( Modifié )

Est-ce qu'on est dans la section réponses ?

Personne n'est dupe...

ourea
( Modifié )

Bonne année Boris Beaulant, je te souhaite le meilleur (et moins d'échanges comme ceux-là - j'en suis désolé).

Justement, si ton algo actuel opère dans ce repère général, une résolution dans le repère de l'ellipse (avec transformations appropriées avant et après) éviterait les "effets de bord" que tu observes, puisque le découpage en arcs de cercle serait indépendant de l'orientation / position de l'ellipse (lorsqu'observé dans le repère de l'ellipse, s'entend). C'est une solution.

Transformation avant : translation en (0,0) puis rotation.
Transformation après : rotation inverse puis translation en C.

ourea

Les formules m'ont l'air bonnes... Par contre, tu peux essayer de remplacer ellipse_def.angle par -ellipse_def.angle (et/ou angle par -angle, dans une moindre mesure), car il dépend de la convention utilisée (que j'ignore).

ourea
( Modifié )

Boris Beaulant, en complément, voici ce que j'obtiens avec tes formules, pour
ellipse_def.center.x = 3
ellipse_def.center.y = 2
ellipse_def.xradius = 0.8
ellipse_def.yradius = 0.2
ellipse_def.angle = 0.2
et angle qui varie par pas de 0.1.

En somme, ça fonctionne... Ton problème doit donc venir d'ailleurs.

ourea

Voilà un problème de réglé...

Et au fait, Martin Müller n'a pas d'idées sur une méthode ? Il parait pourtant plutôt bien armé pour ça...

J'ai bien peur que la détermination d'une solution optimale nécessite une approche itérative, ce qui n'est pas ce que vous voulez, j'imagine ?

ourea

Kentaro

je ne vois pas pourquoi tu prends la mouche...

Probablement que benjams, comme j'ai pu le faire moi aussi, essaie notamment de corriger, en fournissant des éléments quantitatifs, la vision "ce sont les couches les plus externes qui confèrent la rigidité à l'ensemble" que tu continues pourtant de répéter.

Un CP est un milieu dense et homogène (même matériau partout, si on met de côté la notion d'orientation des fibres)... On ne peut considérer que les couches extérieures pour calculer la rigidité.

On voit que le dernier terme, par exemple 64 est bien plus important à lui seul que la somme de tous les termes antérieurs.

Et avec 10 couches ça donne quoi ?
10^3 = 1000
1^3 + 2^3 + 3^3 + ... + 9^3 = 2025 ...

et tout s'écroule...

ourea
( Modifié )

Il se trouve que je connais un peu le sujet...

Si il y a 10 couches (dans une demi-épaisseur, et en ne prenant que celle qui sont "bien orientées"), est-ce la 10ème ou l'ensemble de toutes les autres qui confère le plus de rigidité à l'ensemble ?

ourea
( Modifié )

Il reste que la rigidité de l'ensemble est la somme des contributions des couches individuelles.

On en conclue que certes la couche externe a la contribution la plus importante (parmi toutes les couches prises individuellement), mais que la rigidité de l'ensemble cumule l'effet de toutes les couches, et repose même davantage sur les couches internes que sur la seule couche externe quand le nombre de couches est "grand", par un effet cumulatif...

Les couches externes ont un effet largement prépondérant pour un CP 3 couches ou 5 couches (la couche centrale ne travaillant guère), puis moins prépondérant pour un nombre supérieure, jusqu'à ce que ce soit l'ensemble des couches internes qui contribue le plus au comportement global.

Un CP n'est donc pas réductible à deux couches de surface qui seraient séparées d'un matériau sans de contribution notable à l'ensemble, comme cela peut exister par ailleurs (avec des propriétés mécaniques qui diffèrent de plusieurs ordres de grandeur).

ourea

Ça n'est pas ce que l'ensemble de tes messages suggèrent... mais je m'en arrêterai là.

Bonnes fêtes également.

ourea

Tu as raison, merci pour la piqure de rappel...

ourea

Oui, l'avantage de ces petits objets, c'est qu'on peut mettre le paquet sur le choix du bois (tout en passant les chutes)...

ourea

Tout pareil 😉

ourea

Merci ! Oui, un jouet "simple" qui j'espère durera...

ourea
( Modifié )

Merci ! Oui, j'ai eu les réactions de l'enfant : "trop bien", "transportable" (rapport aux poignées de la boite). Il y a juste les portes qui apparemment mériteraient amélioration... parce qu'elles sont d'abord passées pour des portes de placard, ou les portes du cinéma local...

Et le tout a fini dans le camion poubelle... Voilà donc un jeu qui vivra ! 😉

ourea

Merci !

ourea

Merci !

ourea
( Modifié )

Merci !

Pour les fenêtres, ça n'est quand même pas ce qu'il y a de plus facile à fabriquer... Il me faut encore peaufiner mes gabarits...

ourea
( Modifié )

DînerChocolat oui, c'est ça. Je coupe des clous en 4, pour faire des tiges de 10 mm de long. Les clous font 2.8 mm de diamètre, pour des trous percés à 3 mm. Une petite tige de chaque côté...

ourea

Merci ! C'est aussi l'espoir en effet...

ourea

Merci ! Oui, j'espère !

ourea

Merci ! J'ai indiqué où sont utilisées les essences dans la description.

ourea

Merci Remym !

par ourea il y a 10 mois
ourea

Comme chaque fois je sais pas, mais merci ! 😄

ourea

Merci !

ourea

Merci. Oui, il faut y aller 😉

par FRANCKette il y a 11 mois
ourea
( Modifié )

J'aime beaucoup avec les différentes essences et les différentes épaisseurs. Bravo !

ourea
ourea

Bienvenue !

ourea

Même avis...

ourea

Bonjour. Très sympa (et ça fait des beaux formats).

Pour le temps de gravure, je rajouterais que j'ai tendance à passer 2 fois pour avoir quelque chose de vraiment propre (sans mini copeaux qui restent accrochés)...

Sinon, bien vu pour l'usinage "continu", et en plus ça rend bien.

par Boulou il y a 11 mois
ourea

Boulou Très chouette. Est-ce que tu as appliqué la finition toit-même au parquet ? Saurait-il me dire ce qu'elle est ?