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

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:user:geometry:user:surfaces [2015/01/07 16:53] bomandoc:user:geometry:user:surfaces [2016/11/14 10:30] (current) – [Open Surface of revolution] wautelet
Line 3: Line 3:
 ===== Definition ===== ===== Definition =====
  
-The surface is the basic 3D geometric entity. At this level, the geometric concept, ''Surface''is separated from the topological one, ''([[faces|Side]])''. This allows a definition of a surface much larger than the face (analytically, surfaces are usually infinite -- cylinders, planes, NURBS, ...), and then to restrain them with a ''[[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.
  
-==-== Plane: Planar Surface ==-== 
  
-{{ doc:user:doc-plan.png?200|}}+===== Plane ===== 
 + 
 +{{ doc:user:doc-plan.png |}}
  
 A plane is defined by three points: A plane is defined by three points:
- 
   plane = surfaceset.add( Plane(number, p1, p2, p3) )   plane = surfaceset.add( Plane(number, p1, p2, p3) )
  
-Its normal (and therefore the surface orientationis calculated using the cross product of the vectors:+with 
 +| ''number''               | user number (unique among surfaces and $\ge 1$
 +| ''p1'', ''p2'', ''p3''   the 3 ''[[Points]]'' lying on the plane | 
  
 +Its normal (and therefore the surface orientation) is 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''   | reference towards the ''[[Points]]'' 
- 
-\\ 
-\\ 
-\\ 
-\\ 
- 
- 
- 
  
 ===== Coons ===== ===== Coons =====
  
-{{ doc:user:doc-coons.png|}}+{{ doc:user:doc-coons.png |}}
  
-A Coons is a linear interpolation between four curvesThis curves are gathered in a close wire. The wire orientation defines the surface orientation.+A 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 = surfaceset.add( Coons(number, wire) )   coons = surfaceset.add( Coons(number, wire) )
  
-| ''wire''   reference towards the ''[[contours|Wire]]'' +with 
- +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
-\\ +| ''wire''   | the ''[[contours|Wire]]'' which is interpolated 
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
  
  
 ===== Ruled Surface ===== ===== Ruled Surface =====
  
-A ruled surface is defined by linearly interpolating the space between two curves. The orientation of these curves sets the surface orientation.+A ruled surface is defined by linearly interpolating two curves. The orientation of these curves sets the surface orientation.
  
-{{ doc:user:doc-ruled.png|}}+{{ doc:user:doc-ruled.png |}}
  
   ruled = surfaceset.add( Ruled(number, curve1, curve2) )   ruled = surfaceset.add( Ruled(number, curve1, curve2) )
  
-| ''curve1'', ''curve2'', ...         references towards the ''[[courbes|Curves]]'' +with 
- +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
-Ruled surfaces can be used to create planes, if the two curves are lines, or cylinders if the curves are arcs. +| ''curve1'', ''curve2'', ...         | the 2 facing ''[[courbes|Curves]]''
- +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\ +
-\\+
  
 +Ruled surfaces can be used to create planes, if the two ''Curves'' are coplanar ''Lines'', or cylinders if the curves are ''Arcs''.
  
  
Line 77: Line 53:
 ===== NURBS ===== ===== NURBS =====
  
-{{ doc:user:doc-snurbs.png|}}+{{ 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''          | degree along U and V        |  +{{ doc:user:doc-revol.png |}}
-| ''i1'', ''j1'', ''i2'', ''j2'', ... | indices of the pole matrix |  +
-| ''p1'', ''p2'', ...         | reference towards the points (poles) |  +
-| ''w1'', ''w2'', ...         | weights|  +
-| ''knotu1'', ''knotu2'', ... | knot vector along U      |  +
-| ''knotv1'', ''knotv2'', ... | knot vector along V      +
  
-===== Surface of revolution =====+  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 =====
  
-where+  openrevsur = surfaceset.add( OpenRevolutionSurface(number, axe, wire, angle) )
  
 +with
 +| ''number'' | User number (unique among surfaces and $\ge 1$) |
 | ''axe''                    | ''[[courbes|Line]]'' which defines the revolution axis |  | ''axe''                    | ''[[courbes|Line]]'' which defines the revolution axis | 
-| ''wire''                   | ''[[contours|Wire]]'' which will rotate along tje revolution axis (it cannot touch the axis on its first point and must be coplanar with it). | +| ''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) 
-\\ +
-\\ +
-\\ +
-\\ +
-\\+
  
-==== Cylinder ====+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) #First way to use Cylinder +===== Cylinder ===== 
-  c = Cylinder(number, axe, radius)        #Second way to use 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 ) 
  
-where +with 
- +| ''number'' | user number (unique among surfaces and $\ge 1$) | 
-| ''axe''       | ''[[courbes|Line]]'' which defines the cylinder axis | +| ''axis''       | ''[[courbes|Line]]'' which defines the cylinder axis | 
 | ''radius''    | cylinder radius |  | ''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. |  | ''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  | ''projType''  | = 0 : the surface is finite and limited by the length of the axis \\ = 1 : the surface is infinite 
 +
 +
 +
doc/user/geometry/user/surfaces.1420646015.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki