Salome HOME
Switch development flag to 1
[modules/hexablock.git] / internal_doc / AssoLines.html
1 <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
2 <html><head>
3    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4    <meta name="Generator" content="Microsoft Word 97">
5    <meta name="GENERATOR" content="Mozilla/4.75 [fr] (Win98; U) [Netscape]">
6    <title>Associations par lignes</title></head>
7 <body>
8 &nbsp;
9 <table cols="2" width="100%">
10 <tbody><tr>
11 <td><img src="logo-cs.gif" height="84" width="145"></td>
12
13 <td>&nbsp;</td>
14 </tr>
15 </tbody></table>
16
17 <center><a name="YaccDebut"></a>
18 <br><br><big><big><b><font size="+3"><big><big>HexaBlock<br><br></big></big></font></b></big></big><b><font size="+3">Associations par lignes : précisions</font></b></center>
19
20 <blockquote><i><b><br></b></i></blockquote><p><a href="index.html">Retour</a>
21 &nbsp;&nbsp;</p><p><br>
22 </p><hr width="100%">
23 <p><br><b><big><big></big></big></b></p><p class="western" align="justify">Ce document établit les limitations actuelles des associations par lignes.<br>
24 </p>
25 <p class="western" align="justify"><font size="3">L'utilisateur peut
26 définir des associations multiples au moyen de deux fonctions&nbsp;:</font></p>
27 <pre class="western"><br></pre><table style="width: 771px; height: 31px; text-align: left; margin-left: auto; margin-right: auto; font-family: monospace;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td><p class="western" align="justify">
28    <font size="3">int  associateOpenedLine (Edge*  mstart, Edges&amp; 
29 mline, Shape* gstart, </font>
30 </p>
31 <p class="western" align="justify">                             <font size="3">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;double
32 pstart, Shapes&amp; gline, double pend);</font></p>
33 <p class="western" align="justify">   <font size="3">int 
34 associateClosedLine (Vertex* mfirst, Edge*  mstart, Edges&amp; 
35 mline, </font>
36 </p>
37 <p class="western" align="justify">                             <font size="3">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Shape*
38  gstart, double pstart, Shapes&amp; gline);</font></p></td></tr></tbody></table><pre class="western"></pre>
39
40 <p class="western" align="justify"><font size="3"><br>Ces deux fonctions
41 appellent la même fonction interne :&nbsp;</font></p>
42
43 <table style="width: 771px; height: 31px; text-align: left; margin-left: auto; margin-right: auto; font-family: monospace;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td><p class="western" align="justify">
44    <font size="3">int associateLine
45 (Vertex* vfirst, Edge*  mstart, Edges&amp; mline,</font></p><p class="western" align="justify"><font size="3">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Shape*
46  gstart, double pstart, Shapes&amp; gline, double pend);</font></p></td></tr></tbody></table><pre class="western"></pre>
47 <p class="western" align="justify">Cette fonction effectue
48 les contrôles généraux réalisables par le modèle, trie les edges puis passe la
49 main à une fonction d'interface avec Cascade : </p><table style="width: 771px; height: 31px; text-align: left; margin-left: auto; margin-right: auto; font-family: monospace;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td><p class="western" align="justify">
50    <font size="3">int&nbsp;</font><font size="3">associateCascade (Edges&amp; mline, int msens[], Shape* gstart, </font>
51
52 </p><p class="western" align="justify"><font size="3">                    Shapes&amp;
53 gline, double pstart, double pend, bool clos);</font></p></td></tr></tbody></table><pre class="western"></pre><p class="western" align="justify"><font size="3">Les arguments sont : </font>
54 </p>
55 <ul><li><p class="western" align="justify"><font size="3">Edges&amp; mline :
56         liste triée des edges </font>
57         </p>
58         </li><li><p class="western" align="justify"><font size="3">int msens[]   :
59         indicateur (V_AMON ou V_AVAL) donnant le sens de chaque edge.</font></p>
60         </li><li><p class="western" align="justify"><font size="3">Shape* gstart : 
61         Forme associée au premier edge. </font>
62         </p>
63         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Shapes&amp;
64         gline : Formes associées aux autres edges (peut être vide).</span></font></font></p>
65         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">double
66         pstart :  Paramètre indiquant le point de départ de la première
67         forme. Si la ligne est ouverte, pstart est compris entre 0 et 1. Si
68         la ligne est fermée, seules les valeurs 0 ou 1 sont acceptées. </span></font></font>
69         </p>
70         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">double
71         pend : Paramètre indiquant le point de départ de la dernière
72         forme. Vaut 1 si la ligne est fermée.</span></font></font></p>
73         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">bool
74         clos        : indique si la ligne est ouverte ou fermée.</span></font></font></p>
75 </li></ul>
76 <p class="western" style="margin-left: 1.27cm; text-indent: -0.64cm;" align="justify">
77 <br>
78 </p>
79 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Fonctionnement
80 du programme </span></font></font><font color="#000000"><font size="3"><span lang="fr-FR"><b>associateCascade</b></span></font></font><font color="#000000"><font size="3"><span lang="fr-FR">
81 : </span></font></font>
82 </p>
83 <ul><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Ordonner
84         les edges  (fait dans associateLine)</span></font></font></p>
85         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Transformer
86         les Hexa::Shapes en lignes (TopoDS_Edge) : elles sont rangées dans
87         tabg_line [nblines].</span></font></font></p>
88         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Créer
89         des courbes (type  BrepAdaptor_Curve*) à partir des lignes, c'est
90         le moyen de calculer le point situé à une certaine abscisse
91         curviligne. Les courbes sont rangées dans tabg_curve[nblines].</span></font></font></p>
92         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Mémoriser
93         le longueur réelle de chaque courbe et la mémoriser dans
94         tabg_length[nblines]. </span></font></font>
95         </p>
96         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Définir
97         les points extrêmes de chaque courbe (type gp_Pnt) et l'enregistrer
98         dans tabg_point [2*nblines].</span></font></font></p>
99         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Ordonner
100         (et contrôler) les lignes/coubes au moyen de la fonction
101         vertexInLine, laquelle met à jour les tableaux tabg_orig (donne le
102         sens de chaque ligne) et shape_posit (donne le classement des
103         lignes).</span></font></font></p>
104 </li></ul>
105 <p class="western" style="margin-left: 1.27cm; text-indent: -0.64cm;" align="justify">
106 <br>
107 </p>
108 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR"></span></font></font></p><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Si
109 la ligne globale est continue (les courbes sont jointives deux à
110 deux), on peut procéder à l'association ligne/eddge.</span></font></font></p>
111
112 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Le
113 premier point (défini par tab_gcurve[0] et pstart est associé au
114 premier vertex (défini par mline[0]-&gt;getVertex (msens[0]).</span></font></font></p>
115 <p class="western" align="justify"><br><font color="#000000"><font size="3"><span lang="fr-FR">Il
116         faut ensuite définir la (les) portion(s) de courbe associée(s) à
117         chaque edge.<br>Chaque
118         portion de courbe est définie par la représentation brep de la
119         ligne associée et les paramètres de début et fin. </span></font></font>
120         </p>
121
122 <p class="western" align="justify"><br><font color="#000000"><font size="3"><span lang="fr-FR">Une
123         première tentative fut d'utiliser les <span style="font-weight: bold;">abscisses curvilignes</span>
124 relatives de chaque type de ligne. Cette tentative fut rejetée d'une
125 part car elle ne convenait pas à la bielle (voir dessin en annexe) et
126 d'autre part l'idée d'établir une abscisse curviligne sur le modèle de
127 bloc contredisait l'idée selon laquelle les coordonnées du modele de
128 bloc n'ont pas d'importance.</span></font></font></p>
129
130 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">On
131 se contente d'établir une relation entre les <span style="font-weight: bold;">n  lignes (de la CAO)
132 et les m edges (du modèle) </span>(voir figure 1) : </span></font></font>
133 </p>
134 <ul><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">soit
135         sm1 la position relative du premier vertex du ième edge : on prend
136         sm1 = i/nbedges</span></font></font></p>
137         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">soit
138         sm2 la position relative du second vertex du ième edge. On a donc 
139         : sm2 = (i+1) /nbedges;</span></font></font></p>
140         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">soit
141         sg1 la position relative du premier vertex de la jème ligne. On
142         prend :  sg1 = j/nblignes</span></font></font></p>
143         </li><li><p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">soit
144         sg2 la position relative du second vertex de la jème ligne : sg2 =
145         (j+1)/nblignes.</span></font></font></p>
146 </li></ul>
147 <p class="western" align="justify"><br>
148 </p>
149 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Le
150 ième edge et la jème ligne s'intersectent si : sg1 &lt; sm2 et sg2
151 &gt; sm1.</span></font></font></p>
152 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">On
153 doit alors déclarer qu'une portion de la ligne est associée à
154 l'edge.</span></font></font></p>
155 <p class="western" align="justify"><br>
156 </p>
157 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">La
158 portion de la ligne est délimitée par les paramètres &nbsp;normalisés (compris entre 0 et 1) :</span></font></font></p><table style="width: 771px; height: 31px; text-align: left; margin-left: auto; margin-right: auto; font-family: monospace;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td><p class="western" align="justify">
159    <font color="#000000"><font size="3"><span lang="fr-FR">para_deb = sg1 &lt; sm1 ?
160 (sm1-sg1)/(sg2-sg1) : 0.0;</span></font></font></p>
161 <p class="western" align="justify"><font color="#000000">       
162 <font size="3"><span lang="fr-FR">para_fin   = sg2 &gt; sm2 ?
163 (sm2-sg1)/(sg2-sg1) : 1.0;</span></font></font></p></td></tr></tbody></table><pre class="western"></pre>
164 <p class="western" align="justify"><font color="#000000"><font size="3"><span lang="fr-FR">Le
165 second vertex de l'edge est associé si :  sg1 &lt;= sm2 &lt;= sg2</span></font></font></p>
166 <p class="western" align="justify"><br>
167 </p>
168 <div style="text-align: center;"><img style="width: 607px; height: 566px;" alt="Asso ligne" src="AssoLines.gif"><br></div><br><p><a href="#YaccDebut">Retour au début</a>&nbsp;</p><p></p><hr style="width: 100%; height: 2px;"><br><hr width="100%">
169 </body></html>