Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:user:surfaces

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revisionBoth sides next revision
doc:user:geometry:user:surfaces [2013/07/12 13:58] – external edit 127.0.0.1doc:user:geometry:user:surfaces [2016/11/14 10:30] – [Surface of revolution] wautelet
Line 1: Line 1:
 ====== Surfaces ====== ====== Surfaces ======
  
-===== Définition =====+===== Definition =====
  
-La surface est l'entité géométrique 3D de base. A ce niveaule concept géométrique (''Surface'') est séparé de l'entité topologique ''([[faces|Side]])''. Cela permet de définir une surface bien plus grande que la face (analytiquement, les surfaces sont généralement infinies -- cylindres, plans, NURBS, etc) et la limiter avec un ''[[contours|Wire]]''.+In Metafor''Surface'' is used to build a ''([[faces|Side]])'' limited by a ''[[contours|Wire]]''
  
 +The surface orientation, defined by its normal, is important in 3D contact.
  
-==== Plan ==== 
  
-{{ doc:user:doc-plan.png|}}+===== Plane =====
  
-Passant par 3 points:+{{ doc:user:doc-plan.png |}}
  
 +A plane is defined by three points:
   plane = surfaceset.add( Plane(number, p1, p2, p3) )   plane = surfaceset.add( Plane(number, p1, p2, p3) )
  
 +with
 +| ''number''               | user number (unique among surfaces and $\ge 1$) |
 +| ''p1'', ''p2'', ''p3''   | the 3 ''[[Points]]'' lying on the plane | 
  
-La normale (et donc l'orientation de la surface) est calculée en prenant le produit vectoriel des vecteurs+Its normal (and therefore the surface orientationis computed using the cross product of vectors
 $\boldsymbol{p_2}-\boldsymbol{p_1}$ et $\boldsymbol{p_3}-\boldsymbol{p_1}$. $\boldsymbol{p_2}-\boldsymbol{p_1}$ et $\boldsymbol{p_3}-\boldsymbol{p_1}$.
  
-| ''p1'', ''p2'', ''p3''   | référence vers les ''[[Points]]''+===== Coons =====
  
-\\ +{{ doc:user:doc-coons.png |}}
-\\ +
-\\ +
-\\+
  
- +Coons' surface is a linear interpolation between four ''Curves''These ''Curves'' are gathered in a closed ''Wire''The ''Wire'' orientation defines the surface orientation.
- +
- +
-==== Coons ==== +
- +
-{{ doc:user:doc-coons.png|}} +
- +
-Une Coons est une interpolation linéaire entre 4 courbesCes courbes sont définies dans un contour ferméLe sens du contour définit l'orientation de la surface.+
  
   coons = surfaceset.add( Coons(number, wire) )   coons = surfaceset.add( Coons(number, wire) )
  
-| ''wire''   référence vers le ''[[contours|Wire]]''+with 
 +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''wire''   the ''[[contours|Wire]]'' which is interpolated 
  
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
  
 +===== Ruled Surface =====
  
 +A ruled surface is defined by linearly interpolating two curves. The orientation of these curves sets the surface orientation.
  
-==== Surface réglée ==== +{{ doc:user:doc-ruled.png |}}
- +
-Une surface réglée est une surface construite en interpolant linéairement l'espace entre deux courbes. Le sens de celles-ci est important et définit l'orientation de la surface. +
- +
-{{ doc:user:doc-ruled.png|}}+
  
   ruled = surfaceset.add( Ruled(number, curve1, curve2) )   ruled = surfaceset.add( Ruled(number, curve1, curve2) )
  
-| ''curve1'', ''curve2'', ...         référence vers les ''[[courbes|Curves]]''+with 
 +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''curve1'', ''curve2'', ...         the 2 facing ''[[courbes|Curves]]''
  
-Ce type de surface peut être utilisé pour créer des plans (les deux courbes sont alors des droites) ou des cylindres (les deux courbes sont des arcs de cercle).+Ruled surfaces can be used to create planes, if the two ''Curves'' are coplanar ''Lines'', or cylinders if the curves are ''Arcs''.
  
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
-\\ 
  
  
 +===== NURBS =====
  
- +{{ doc:user:doc-snurbs.png |}}
-==== Nurbs ==== +
- +
-{{ doc:user:doc-snurbs.png|}}+
  
   nur = surfaceset.add( NurbsSurface(number) )   nur = surfaceset.add( NurbsSurface(number) )
   nur.setDegreeU(degU)     nur.setDegreeU(degU)  
   nur.setDegreeV(degV)     nur.setDegreeV(degV)  
-  nur.push(i1,j1,p1); nur.pushWeight(i1,j1,w1) +  nur.push(i1, j1, p1); nur.pushWeight(i1, j1, w1) 
   nur.push(i2, j2, p2); nur.pushWeight(i2, j2, w2)     nur.push(i2, j2, p2); nur.pushWeight(i2, j2, w2)  
   nur.pushKnotU(knotu1)   nur.pushKnotU(knotu1)
Line 89: Line 65:
   nur.pushKnotV(knotv1)   nur.pushKnotV(knotv1)
   ...   ...
-  nur.pushKnotV(knotv2)  +  nur.pushKnotV(knotv2)  
 +  
 +with 
 +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''degU'', ''degV''          | degree along U and V                    |  
 +| ''i1'', ''j1'', ''i2'', ''j2'', ... | indices of the pole matrix      |  
 +| ''p1'', ''p2'', ...         | points (called "poles"                |  
 +| ''w1'', ''w2'', ...         | weights                                 |  
 +| ''knotu1'', ''knotu2'', ... | knot vector along U                     |  
 +| ''knotv1'', ''knotv2'', ... | knot vector along V                     
  
 +===== Closed Surface of revolution =====
  
-| ''degU'', ''degV''          | degré selon U et V        |  +{{ doc:user:doc-revol.png |}}
-| ''i1'', ''j1'', ''i2'', ''j2'', ... | indice de la matrice des pôles |  +
-| ''p1'', ''p2'', ...         | référence vers les points (pôles) |  +
-| ''w1'', ''w2'', ...         | poids                     |  +
-| ''knotu1'', ''knotu2'', ... | vecteur knot selon U      |  +
-| ''knotv1'', ''knotv2'', ... | vecteur knot selon V      +
  
-==== Surface de révolution ====+  revsur surfaceset.add( RevolutionSurface(number, axe, wire) )
  
-{{ doc:user:doc-revol.png|}}+with 
 +| ''number''user number (unique among surfaces and $\ge 1$) | 
 +| ''axe''                    | ''[[courbes|Line]]'' which defines the revolution axis |  
 +| ''wire''                   | ''[[contours|Wire]]'' which will rotate along the revolution axis (it cannot intersect the axis on its first point and must be coplanar with it). | 
  
-  revsur surfaceset.add( RevolutionSurface(number, axe, wire) )+===== Open Surface of revolution =====
  
-+  openrevsur = surfaceset.add( OpenRevolutionSurface(number, axe, wire, angle) )
  
-| ''axe''                    | ''[[courbes|Line]]'' définissant l'axe de révolution de la surface de révolution |  +with 
-| ''wire''                   | ''[[contours|Wire]]'' définissant le contour tournant autour de l'axe de révolution (limitation : il ne peut pas toucher l'axe en son premier point). Il doit être coplanaire avec l'axe +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''axe''                    | ''[[courbes|Line]]'' which defines the revolution axis |  
 +| ''wire''                   | ''[[contours|Wire]]'' which will rotate along the revolution axis (it cannot intersect the axis on its first point and must be coplanar with it). |  
 +| ''angle'' | opening angle ($]0, 2 \pi[$) | 
 +===== Sphere  =====
  
  
-\\ +  c = Sphere(number, centerPoint, radius, reversed) 
-\\ +
-\\ +
-\\ +
-\\ +
-\\+
  
-==== Cylindre de révolution droit ====+with 
 +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''centerPoint'' | sphere center (Point previously defined in the Pointset !)| 
 +| ''radius''    | sphere radius |  
 +| ''reversed''  | unit normal convention - By default (reversed false), the local covariant tangents are  oriented in such a manner that the unit normal points inwards ! | 
  
-  c = Cylinder(number, axe, radius, ptGen) #Première possibilité d'utiliser Cylinder +===== Cylinder ===== 
-  c = Cylinder(number, axe, radius)        #Deuxième possibilité d'utiliser Cylinder+ 
 +  c = Cylinder(number, axis, radius, ptGen) # First way to use Cylinder 
 +   
 +  c = Cylinder(number, axis, radius)        # Second way to use Cylinder
   c.setProjType(projType)   c.setProjType(projType)
-  surfaceset.add( c ) 
  
-+with 
 +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
 +| ''axis''       | ''[[courbes|Line]]'' which defines the cylinder axis |  
 +| ''radius''    | cylinder radius |  
 +| ''ptGen''     | optional ''[[doc:user:geometry:user:points|Point]]'' of the generating line of the cylinder. This point must be situated: \\ - in a plane perpendicular to the axis including the first point of the axis, \\ - to a distance equal to the cylinder radius of the first point of the axis. \\ Since this point is quite difficult to define when the cylinder is not parallel to an axis, a random point can be supplied and Metafor will put it in its right place with a ''WARNING_MESSAGE'' (see ''apps.qs.contactCylProj0Point''). This point is compulsory if the cylinder has a given rotation. |  
 +| ''projType''  | = 0 : the surface is finite and limited by the length of the axis \\ = 1 : the surface is infinite  |  
 + 
  
-| ''axe''       | ''[[courbes|Line]]'' définissant l'axe du cylindre |  
-| ''radius''    | Rayon du cylindre |  
-| ''ptGen''     | ''[[doc:user:geometry:user:points|Point]]'' optionnel de la génératrice du cylindre situé : \\ - dans le plan perpendiculaire à l'axe, \\ - passant par le premier point de l'axe, \\ - à une distance égale au rayon du cylindre du premier point de l'axe. \\ Comme ce point est assez difficile à définir quand on n'a pas de cylindre parallèle à un axe, on peut ajouter un point avec des coordonnées quelconques et Metafor le remettra à la bonne place tout seul comme un grand au début du calcul avec un petit ''WARNING_MESSAGE'' pour signaler que le point a été changé de place (voir ''apps.qs.contactCylProj0Point''). Ce point est obligatoire si le cylindre a une rotation imposée. |  
-| ''projType''  | = 0 : on considère une surface finie limitée par la longueur de l'axe \\ = 1 : on considère une surface infinie  
doc/user/geometry/user/surfaces.txt · Last modified: 2016/11/14 10:30 by wautelet

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki