Bulge (théorie)


Explications théoriques
et
façons de les utiliser


Les polylignes peuvent avoir des segments courbes, c'est bien connu mais lorsqu'on veut y toucher par programmation on se trouve confronté à une propriété bien étrange, que ce soit pour les interroger ou pire encore créer un segment courbe on se bagarre avec cette notion de "bulge".

L'acception ordinaire en français de ce mot "bulge" serait renflement, ou encore courbure, déjà on comprend un tout petit peu mieux de quoi on parle.
Dans cette Page je vous en parle déjà mais sans la théorie.

Les développeurs d'AutoCAD ont sans doute choisi cette notion de "bulge" pour décrire ces parties courbes dans les polylignes par souci d'économie de données informatiques, en effet avec uniquement cette valeur "bulge" on se passe de valeur de rayon, on se passe d'angle au centre ou décrit, on se passe de coordonnées du centre de l'arc, ce qui simplifie quelque peu la mémorisation de cette courbure dans une liste.
Avec cette seule valeur de "bulge" ,et uniquement avec elle, tous les arcs ou raccordements circulaires (dans les polylignes 2D) sont parfaitement décrits numériquement, c'est même un tour de force quand on y repense a posteriori. bravo les développeurs ! en revanche ça nous donne plus de travail pour traiter ces informations, mais on aime ça le travail, et la trigonométrie aussi, non ?


Définition de base :
Le bulge a comme valeur :
la tangente l'angle au centre de l'arc divisé par quatre
soit : la tangente du quart de l'angle au centre.


C'est un nombre sans unité, ce n'est pas une distance, ni une valeur d'angle, c'est une valeur de "bulge" point final.
C'est ce genre de définition qui donne ce léger vertige la première fois qu'on la découvre!
Mais au fait : l'angle au centre c'est quoi m'sieur?
Voici une polyligne avec un segment courbe :

Dans son cas l'angle au centre (1.12 r) est l'angle formé par les deux perpendiculaires passant par les sommets de début et fin de l'arc : (je m'exprime tout au long de ces explications en radians, l'unité angulaire native d'AutoCAD) :

1.57 radian (aux décimales près) est la valeur de l'angle droit ( pi / 2) :


Et la tangente d'un angle c'est quoi  ? (j'ai bien entendu ce que vous chuchotiez au fond de la salle), je vous réponds en image c'est plus simple :

Dans le cercle trigonométrique (de rayon 1 pour mémoire) voici la représentation de la tangente d'un angle : (en rouge sur l'image)

En effet 1.14 (et ses décimales...) est la valeur de la tangente d'un angle de 0.85 r


L'obtention de la valeur de "Bulge" se fait en interrogeant le code 42 dans la liste de définition d'une polyligne en AutoLISP.

 

Si, au lieu de travailler avec cette formule sur la tangente les développeurs avaient utilisé les points de départ et de fin et la valeur du rayon il aurait fallu d'autres éléments pour dessiner l'arc sans ambiguïté.
En effet deux points et une valeur de rayon permettent le dessin de quatre arcs différents :
La preuve en image (si besoin) : il y a bien quatre arcs, bleu rouge, vert et rose chacun de rayon 5.0 et passant par les deux points.


Si, au lieu de la tangente du quart de l'angle les développeurs avaient choisi la moitié de la tangente, il aurait fallu gérer les angles supérieurs à 180 ° par une valeur de signe alors qu'avec la tangente du quart de l'angle le signe est disponible pour indiquer le sens de construction de l'arc, vers la gauche, vers la droite, ou sens horaire et anti-horaire (clockwise vs counterclockwise).
Une fois qu'on a obtenu la valeur de bulge, TOUT ce qui concerne cet arc unique devient calculable, que ce soit le rayon, la corde, la flèche, l'angle au centre ...


Tous les vertex (segments de polyligne) ont une valeur de bulge renseignée dans leur liste de définition sachant que :
une valeur de bulge de 0 (zéro) définit une droite (pas d'arc)
une valeur de bulge différente de 0 (zéro) définit un segment courbe
une valeur de bulge de 1 définit un angle plat (demi-cercle)
Quelques clarifications pour les calculs
avec La valeur de
Bulge :


Quelques explications de vocabulaire :

Quelques explications ANGULAIRES :

LEs CALCULs avec la valeur de BULGE :

La flèche se calcule avec : demi-corde multiplié par bulge

Le rayon se calcule avec : (demi-corde² plus flèche²) divisé par flèche * 2

Ce qui donne avec un vertex courbe isolé dans une liste contenant :
point de départ bulge point d'arrivée comme par exemple :

((207.076 8.30509) -0.322516 (212.899 8.7793))

Le code suivant va calculer:
l'angle au centre, la corde, la flèche, le rayon et les coordonnées du centre

on vérifie :

Valeur renvoyée dans la variable "centre" : (210.317 4.49797) c'est OK !!

Pour être rigoureux dans les explications si vous prenez les valeurs de cette page, il y a une imprécision dans le résultat car la liste a été copiée en l'état depuis un autre programme qui fabrique cette liste (exemple à venir) et du coup le programme de cette page travaille avec des valeurs tronquées en décimales.

à venir : une exemple complet qui traitera directement une Polyligne
avec des arcs entre certains vertex

 


haut de page

retour aux exercices sur polylignes

18 mars 2019