





![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: L'application PREP_MESH
Sup.: Le préprocesseur EMC²
Préc.: 1.5.2 Les menus globaux
Index
Table des matières
Cette application est dirigée par le menu de l'application (figure
1.24) en haut de l'écran et le menu de désignation
(figure 1.18) en bas de l'écran.
Elle permet de construire des objets 2D définis
à partir des points, segments, arcs et splines; les cerles et
les droites ne servant que d'artifices de construction.
Elle permet de construire et manipuler ces objets:
- en utilisant la géométrie élémentaire pour définir les points,
droites, cercles, segments, arcs (exemple: en utilisant la propriété de tangence,
on peut définir un cercle tangent à 3 droites,
ou bien une droite tangente à 2 cercles).
- en utilisant des splines (une suite de points) pour définir
des courbes fermées ou non;
- en coupant les objets entre eux (excepté les droites et les
cercles qui sont seulement des objets de construction). On peut par exemple, couper par une droite mais
celle-ci ne sera pas affectée;
- en arrondissant des angles;
- en dupliquant n fois ces objets à l'aide des transformations
affines classique: symétrie, rotation, homothétie;
- en faisant des "contourages" de figures;
- en inversant des arcs ou des segments;
- etc
Figure 1.24: Le menu de l'application CONSTRUCTION
Nous rappelons que grâce aux menus de désignation on peut désigner
des points, droites, cercles, arcs, segments, splines, coordonnées
(points immédiats, extrémités, etc...). Donc nous noterons par
<POINT>
, <DROITE>
, <CERCLE>
, <SEGMENT>
, <ARC>
, <SPLINE>
, <COORD>
le fait de
désigner un de ces éléments ou une partie de ceux-ci,
de plus on crée une <VALEUR>
en utilisant la calculette ou ses raccourcis
(voir les sections 1.5.2,1.5.2 pour plus de détails).
Nous utiliserons, dans la méta syntaxe de description du langage de construction,
les symboles suivants:
Nous appellerons xxx une suite d'actions qui seront définies par <xxx> = ... . ;
- A B pour définir la concaténation de A et B
(et) " on attend A puis B".
- A|B pour définir une alternative (ou) " on attend A ou B"
(action moins prioritaire que la concaténation).
- * pour la répétition de l'expression qui suit (0 ou plusieurs fois) .
- " pour rien (ce qui permet de faire quelque chose dans tous les cas)
- les parenthèses ( ) pour changer les priorités
Exemple :
L'expression : <xxx> = ( A | ") *(B|C) E ; nous permet d'entrer des suites de
lettres (chaîne) commençant ou non par A formé de B ou de C
en suite et ce terminant par E.
Exemple de chaînes admissibles :
ABBCCCCE E AE CBCBCBCBCBCBCBE
ABBBBBBBE BE ABE BCBCBCBCBCBCBCE
BBBBBBBBBE CE ACE CCCCCCCCCCCCCCE
Nous appellerons
- point_coor la désignation de POINT ou COORD;
- contrainte la désignation de POINT, COORD,
DROITE, CERCLE,
[4] SEGMENT ou ARC;
- elements la désignation de POINT, COORD,
DROITE, CERCLE,
[4] SEGMENT, ARC ou SPLINE.
- etc...
ou encore, dans la méta syntaxe :
<point_coor> = <POINT> | <COORD>;
<contrainte> = <point_coor> | <DROIT> | <CERCLE> | <ARC>
| <SEGMENT>;
<element> = <contrainte> | <SPLINE>;
Dans la définition de contrainte, l'ARC est assimilé au cercle qui le supporte, de même que
SEGMENT est assimilé à la droite qui le supporte.
Remarque:
En base de données les éléments sont décrits par:
POINT | (a,b) avec: x=a; y=b |
DROITE | (a,b,c) tels que ax+by+c=0 |
CERCLE | centre(a,b) et rayon r |
SEGMENT | (P1,P2) avec P1=(x1,y1) et P2=(x2,y2) |
ARC | centre en P1 passant par P2 et d'angle , |
| avec P1=(x1,y1) et P2=(x2,y2) |
SPLINE | (nombre de points, tête de la liste des points) |
Au niveau de l'application CONSTRUCTION tous les menus autres que le menu de CONSTRUCTION
sont filtrés par les applications DESIGNATION, CALCULETTE, GENERALITE, GESTION DE L'ECRAN GRAPHIQUE.
Donc le fait de cliquer dans ces menus n'a aucune action directe sur l'application (excepté le
changement de type de désignation ou l'entrée d'une valeur).
Les cases du menu de l'application et les désignations gouvernent l'application CONSTRUCTION.
Par la même nous noterons
XXXX : le fait de cliquer dans la case XXXX du menu de l'application courante (en haut).
Il n'y aura aucune confusion avec des cases de même nom d'un autre menu.
exemple:
- le fait de désigner un cercle est noté CERCLE
- le fait de cliquer dans l'item CERCLE du menu CONSTRUCTION est noté CERCLE
il ne faut pas confondre ces deux "cercles", de même si l'on clique dans l'item CENTRE du menu désignation
on désignera des centres d'arcs ou de cercles ce qui donnera des COOR
par contre si l'on clique dans l'item CENTRE du menu CONSTRUCTION (en haut) on obtient CENTRE.
L' état du système est un ensemble de variables qui sont utilisées par l'application,
ces variables globales à l'application sont :
- %DISTANCE permet définir une distance signée qui est utile pour des constructions de point, droite, segment, etc...
- %RAYON permet de définir le rayon d'un arc ou cercle, etc...
- %ANGLE permet de définir l'angle
d'arcs ou de 2 droites, etc...
- %RAPPORT permet de définir le rapport d'une homothétie, etc...
- %NOMBRE permet de définir le nombre de duplications lors des transformations.
Ces variables sont modifiables presque à tout moment.
Nous appellerons <modif etat>
une modification de l'état du système , c'est à dire une modification
de la valeur affectée à l'une des variables
<modif etat> = *( <distance> | <rayon> | <angle> | <rapport> | <nombre> )
- Modification de %DISTANCE: <distance>
= DISTANCE ( <VALEUR>
| IDEM)
- Modification de %RAYON: <rayon>
= RAYON (VALEUR | IDEM)
- Modification de %ANGLE: <angle>
= ANGLE (VALEUR | IDEM)
- Modification de %RAPPORT: <rapport>
= RAPPORT (VALEUR | IDEM)
- Modification de %NOMBRE: <nombre>
= NOMBRE (VALEUR | IDEM)
IDEM Permet de garder la valeur précédente de la variable d'état.
POINT
*( <COORD>
| <POINT> ( <CERCLE> | <DROITE>
| <ARC> | <SEGMENT> | <SPLINE> )
| <DROITE> <element>
| <CERCLE> <element>
| <SPLINE> <element>
);
- Première alternative, COORD: Création du point de coordonnées immédiates par action des menus
de désignation:
P_TABL, PT_XY, FI_XY, INTERS, EXTREM, MILIEU, CENTRE.
- Autres alternatives: On construit un point après avoir désigné deux éléments.
- Si l'un des élément est un point soit P le point projection de ce point sur l'autre élément
- si cet autre élément est une droite alors on crée un point à une distance %DISTANCE de P sur la droite dans la
direction de la droite
- sinon on crée le point P.
- Si aucun des deux éléments n'est un point, on crée le point d'intersection de ces deux éléments.
Comme il y a en général deux intersections entre une droite et un cercle ou entre deux cercles, le choix
du bon point d'intersection est fait en choisissant le plus proche des points ayant servis à désigner les
éléments.
Exemple de construction de points
On commence par cliquer dans la case POINT du menu construction pour se mettre en mode de construction de
points puis
- en cliquant dans la case PT_TABL du menu désignation, et puis pour chaque clique dans la fenêtre
graphique on construit un point
- en cliquant dans la case PT_XY du menu désignation ont construit un point pour chaque couple de nombres
entrés avec la calculette (tapés au clavier et suivis de = ou (CR)
)
- en cliquant dans la case FI_XY et en entrant un nom de fichier, on construit un point par
couple de nombres qu' il y a dans le fichier formaté.
- on construit des points intersection de deux éléments (droite, segment, cercle, arc, spline) en désignant un
couple de ces éléments.
DROITE *( <contrainte> <contrainte>
| IDEM *<SEGMENT>
);
Si on a comme contraintes (indépendamment de tout ordre) :
- CercleOuPoint := cercle | point;
- CercleOuPoint CercleOuPoint: la droite créée est tangente aux deux cercle
(aux points les plus proches des points ayant servi à désigner les deux cercle)
- droite droite:
- si elles s'intersectent: la droite créée est bissectrice des autres droite.
- si elles sont confondues: on crée une droite parallèle à une distance %DISTANCE
du coté du point de désignation.
- sinon: on crée la droite parallèle aux deux droite, à égale distance de celles-ci.
- droite cercle: la droite créée est parallèle à la droite et est tangente au cercle
en un point le plus proche de celui ayant servi à désigner le cercle.
- droite Point: la droite créée fait un angle %ANGLE avec la droite
et passe par le point.
Dans l'autre alternative (IDEM), on construit la droite s'appuyant sur
les * segment.
CERCLE
*( <rayon> *( CENTRE <point_coor> | <contrainte> <contrainte>)
| <contrainte> ( <rayon> <contrainte>
| <contrainte> ( <rayon> | <contrainte> ))
| CENTRE <point> *(<rayon> | <contrainte>)
| IDEM *<ARC>
);
Explication des différents cas (indépendamment de l'ordre)
- rayon CENTRE point: cercle de centre le point
point et de rayon
[4] %RAYON.
- rayon contrainte contrainte: cercle de rayon
donné par %RAYON et ayant deux
contrainte de tangence par rapport aux deux éléments désignés.
- contrainte contrainte contrainte:
cercle ayant trois contraintes de tangence par rapport
aux trois éléments désignés.
- CENTRE point contrainte: cercle de centre donné tangent à la contrainte désignée.
- IDEM * arc: cercle s'appuyant sur les * arc
(même centre, même rayon que les * arc).
ARC *( CENTRE <point> *( <angle> <contrainte>
| <rayon>
| <contrainte> (<angle> | <contrainte>))
| <rayon> *( CENTRE <point>
| <contrainte> <contrainte> )
| <contrainte> ( <rayon> <contrainte>
| <contrainte> (<rayon> | <contrainte>))
| IDEM *<CERCLE>
);
Explication des différents cas (indépendamment de l'ordre).
Pour la construction des ARCS, on crée d'abord le cercle ayant les mêmes contrainte et on prend
un arc sur ce cercle.
- CENTRE point angle contrainte:
arc de centre donné commençant au point de tangence avec la contrainte et
faisant un angle à partir de ce point.
- CENTRE point rayon:
arc de centre donné de rayon donné %RAYON d'angle 2
- CENTRE point contrainte contrainte:
arc de centre donné commençant au point de tangence avec la première
contrainte et finissant à l'aplomb du point de tangence d'avec la
deuxième contrainte (en tournant dans le sens positif).
- rayon contrainte contrainte:
arc de rayon donné %RAYON commençant au point de tangence avec
la première contrainte et finissant au point de tangence d'avec
la deuxième contrainte.
- contrainte contrainte contrainte:
arc tangent aux trois
[4] contrainte reliant les trois points de tangence aux
contrainte dans l'ordre des contrainte.
- IDEM * cercle:
crée un arc d'angle 2
sur chaque cercle désigné.
SEGMENT *( <contrainte> <contrainte> );
Explication des différents cas (indépendamment de l'ordre).
Pour la construction des SEGMENTS, on commence par créer la DROITE ayant les mêmes contraintes puis on prend
un segment de cette droite reliant les deux points de tangence aux deux containtes si ils existent,
sinon on ce sert de la variable d'état
Par exemple :
- cercle cercle:
Le segment est tangent aux deux cercle (aux points les plus proches des
points ayant servis à désigner les deux cercle).
- droite droite:
- si elles s'intersectent: Le segment est sur la bissectrice des deux droite
et est longueur %DISTANCE.
- si les deux droite sont confondues: on crée un segment parallèle à
une distance %DISTANCE du coté du point de désignation (Il est de longueur
%DISTANCE ou de même longueur que droite selon que droite
est une DROITE ou un SEGMENT.
- sinon: Le segment est entre les deux droite parallèles, à égale distance
(il est de longueur %DISTANCE).
- droite cercle:
Le segment est parallèle à la droite désignée et est tangent au cercle
en un point le plus proche de celui ayant servi à désigner le cercle
(il est de longueur %DISTANCE et commence au point de tangence avec le
cercle).
SPLINE <point> *<point>;
Construit la spline (cubique par morceaux) passant par les points.
On peut faire une spline fermée en définissant le dernier point
identique au premier (en le désignant).
ROTATION , TRANSLAT ,
HOMOTHETIE , SYMETRIE
définissent des transformations que l'on va appliquer sur les éléments désignés.
ROTATION <modif etat> ( CENTRE | " ) <point_coor> <modif etat> *<element>
TRANSLAT <point_coor> <point_coor> *<element>
HOMOTHETIE <modif etat> CENTRE (<point_coor> | " ) <modif etat> *<element>
SYMETRIE (<point_coor> | <DROITE>| <SEGMENT>) *<element>
- ROTATION
- on applique la rotation de centre point d'angle %ANGLE sur
[4]elements.
Si %NOMBRE
1, on déplace elements sinon on crée
[4]
%NOMBRE-1 nouvelles occurences de elements.
(Donc il y a %NOMBRE fois elements sur l'écran après la transformation).
- TRANSLAT
- on applique la translation d'un vecteur allant du premier point au deuxième point sur elements.
Si %NOMBRE
1, on déplace
[4]elements, sinon on crée %NOMBRE-1 nouvelles occurences de elements.
(Donc il y a %NOMBRE fois elements sur l'écran après la transformation).
- HOMOTHETIE
- on applique l'homothétie de centre point de rapport %RAPPORT sur elements.
Si %NOMBRE
1, on déplace elements sinon on crée %NOMBRE-1 nouvelles occurences de elements.
(Donc le nombre d'occurences de elements sur l'écran après la transformation est %NOMBRE).
- SYMETRIE
- on applique la symétrie par rapport à point ou à droite sur tous les elements
que l'on désignera. Attention si %NOMBRE est plus grand que 2, il y aura des superpositions d'éléments.
Cette commande permet de faire des arrondis entre SEGMENTS et ARCS.
ARRONDI *( <contrainte> <contrainte> )
On crée un arrondi de rayon %RAYON entre les deux contrainte, l'arrondi tourne toujours dans le sens positif.
L'arrondi est un arc dont le cercle qui le supporte est tangent aux deux contrainte, l'arc va du premier point
de tangence au deuxième point de tangence en tournant dans le sens positif.
Si une contrainte est un ARC ou un SEGMENT, on modifie cette contrainte de façon à ce que cet élément se termine
au point de tangence avec l'arrondi.
CONTOURAGE (<DROITE> | <CERCLE>) (<DROITE> | <CERCLE>)
(<DROITE> | <CERCLE>) (COMPLE_ARC | ")
*( (<DROITE> | <CERCLE>) (COMPLE_ARC | ") )
Permet de définir un contour formé de SEGMENTS et d'ARCS s'appuyant sur un ensemble de droites et de cercles.
Le programme fonctionne en calculant l'intersection de la contrainte i avec la contrainte i+1 ce qui donne le point I
puis la contrainte i+1 avec la i+2 ce qui donne le point I+1, I et I+1 forment un nouveau morceau du contour
et ainsi de suite.
Par exemple avec des droites (figure 1.25) :
Supposons que nous avons les 5 droites
s'intersectant
en
et que nous voulons définir le
contour formé des segments
,
,
,
,
.
On désigne par +i le ième point de désignation.
Figure 1.25: Exemple de contourage
On désigne
en +2 puis
en +1 ce qui défini
Puis on désigne
en +4 ce qui définit
(ici le programme trace
Puis on désigne
en +3 ce qui définit
(ici le programme trace
Puis on désigne
en +5 ce qui définit
(ici le programme trace
Puis on désigne
en +2 ce qui définit
(ici le programme trace
Puis on désigne
en +1 ce qui définit
(ici le programme trace
Dans le cas de cercles il faut faire attention car les points de désignation
servent à lever les ambiguïtés d'intersections multiples (le point de
désignation de la contrainte i sert à lever l'ambiguïté de désignation entre les contraintes i et i+1).
RETOURNE *( <ARC> | <SEGMENT> )
Retourne un SEGMENT ou un ARC
- ARC :
- SEGMENT: (P1,P2)
(P1,2*P1-P2) (Symétrie / P1)
COMPLE_ARC *ARC
Change un ARC en son complément
si (
<0) alors
=
+2
sinon
=
- 2
INVERSER *(<ARC> | <SEGMENT> | <SPLINE>)
Inverse un ARC, SEGMENT ou une SPLINE
COUPER * ( <point_coor> *(<ARC> | <SEGMENT> | <SPLINE>)
| (<DROITE> | <CERCLE> | <ARC> | <SEGMENT> | <SPLINE>)
(<DROITE> | <CERCLE> | <ARC> | <SEGMENT> | <SPLINE>)
)
Si on désigne point en premier on
coupe en deux un ARC ou un SEGMENT ou une SPLINE
par la projection de point sur l'élément.
Pour la SPLINE on coupe au point de
définition le plus proche du point point.
Sinon on coupe 2 à deux les éléments désignés si ceux-ci
sont sécables (les éléments non sécables sont les DROITE et
les CERCLE.
CHANGER *( ANGLE <ARC> (<VALEUR> | IDEM)
| RAYON <CERCLE> (<VALEUR> | IDEM)
| <POINT> <point_coor>)
Permet donc de changer :
- l'angle d'un ARC désigné
- le rayon d'un CERCLE
- la position d'un point (on change le premier en le second, ce premier point peut être
le centre d'un arc ou d'un cercle)
- l'extremité d'un SEGMENT ou d'un ARC.
- un point de définition d'une SPLINE, donc la forme d'une SPLINE.
AJOUTER *( POINT *( <ARC> | <SEGMENT> | <SPLINE> | <POINT> <POINT> )
| SEGMENT *( <SEGMENT> <SEGMENT> )
| SPLINE *( <SPLINE> ( <SPLINE> | *<POINT> ) )
| ARC *( <ARC> <ARC> )
- Si POINT : on rajoute %NOMBRE points avec une raison %RAPPORT sur ARC ou SEGMENT ou SPLINE ou entre
les 2 POINTS.
- Si SEGMENT : on rajoute %NOMBRE segments par interpolation linéaire de raison %RAPPORT entre les 2 SEGMENTS.
- Si SPLINE :
- suivi de la désignation de 2 SPLINES alors :
on rajoute %NOMBRE splines par interpolation linéaire de raison
%RAPPORT entre les 2 SPLINES.
- suivi de la désignation d'une spline et d'un point
on ajoute à la SPLINE désignée de nouveaux POINTS de définition donnés par
*point.
- Si ARC :on rajoute %NOMBRE arcs définis par 3 points (2 extremités, et le milieu)
qui sont les interpolations linéaires de raison %RAPPORT entre
les extrémités et les milieux des 2 arcs désignés
FONDRE *( <segment> <segment> | <arc> <arc> | <spline> <spline> )
Permet de fondre 2 SEGMENTS ou 2 ARCS ou 2 SPLINES ayant une extrémité commune en un seul élément de même type.
L'élément résultant est dans le sens du premier désigné.
Pour que cette instruction puisse s'effectuer, il faut:
- dans le cas de 2 segments, que les 2 segments soient colinéaires.
- dans le cas de 2 arcs, que les 2 arcs aient même centre et même rayon.






![[BIG]](../icons/zoom18.gif)
![[Normal]](../icons/zoom14.gif)
![[small]](../icons/zoom10.gif)
Suiv.: L'application PREP_MESH
Sup.: Le préprocesseur EMC²
Préc.: 1.5.2 Les menus globaux
Index
Table des matières