Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:user:courbes

Differences

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

Link to this comparison view

doc:user:geometry:user:courbes [2015/01/07 16:24]
boman [PythonCurve: Python Interpreted Curves]
doc:user:geometry:user:courbes [2016/03/30 15:23]
Line 1: Line 1:
- 
-====== Curves ====== 
  
-===== Introduction ===== 
- 
-    * ''Curves'' are defined using ''[[doc:user:geometry:user:points]]'' and auxiliary data, and are used to define ''[[doc:user:geometry:user:contours]]'' 
-    * A curve orientation is given by the succession if its points. For example, a straight line is oriented from its first point towards its second point. This orientation is relevant when defining contact matrices, for instance. For 2D rigid-deformable contact, a curve must be defined with "area to the left", which means that the normal must point towards the inside of the matter (also applicable with ''Surfaces'' in 3D). 
-    * The normal of a curve is defined such as $\boldsymbol{t} \wedge \boldsymbol{n} = (0,0,1)$. 
- 
-{{ doc:user:doc-courbe.png?300 |}} 
- 
-===== Line: straight segment ===== 
- 
-{{ doc:user:doc-droite.png|}} 
- 
-A ''Line'' (line segment) is defined with its two vertices. 
- 
-  line = curveset.add( Line(number, pt1, pt2) )  
- 
-\\ 
-\\ 
- 
- 
-===== Arc =====  
- 
-{{ doc:user:doc-arc.png|}} 
- 
-An ''Arc'' of circle is defined using three points, as shown on the figure. 
- 
-  arc = curveset.add( Arc(number, pt1, pt2, pt3) ) 
- 
-\\ 
-\\ 
- 
- 
- 
- 
-===== Cubic Spline ===== 
- 
-{{ doc:user:doc-spline.png|}} 
- 
-==== "Open" cubic spline ==== 
- 
-  spl = curveset.add( CubicSpline(number, [pt1, pt2, pt3, pt4]) )  
-  spl.useLsTangent()    # tangents are calculated  
-                        # using local reconstruction [DEFAULT] 
-  spl.useLittTangents() # tangents are calculated  
-                        # using Litt/Beckers lectures 
-                       
-   
-==== "Closed" Cubic Spline ==== 
- 
-To close a spline, the first and last points of the list must be the same. 
- 
-  spl = CubicSpline(number, [pt1, pt2, pt3, pt4, ..., pt1]) 
- 
-or, if the curve is defined based on a mesh, the mesh must be chosen closed. 
- 
-==== Spline-reconstruction based on a mesh ==== 
- 
-{{  :doc:user:ico-advanced.png?40|Advanced}} 
-It is possible to construct a spline based on the mesh of a line. This way, a smooth approximation of this mesh if obtained. 
- 
-  spl = CubicSpline(number, obj) 
- 
-where ''obj'' is a meshed object. 
- 
-===== Full Circle =====  
- 
-{{ doc:user:doc-cercle.png|}} 
- 
-A circle is defined with its center and radius (this function is only defined in the $z=0$ plane) 
- 
-  circ2d = curset.add( Circle(number, pt1, radius) ) 
- 
-The orientation of the circle can be inverted (and so will its tangent and normal used for contact): 
- 
-  circ2d.reverse()       
- 
- 
- 
-===== NURBS ===== 
- 
-A Non-Uniform Rational Basis Spline (N.U.R.B.S.) is defined as: 
- 
-{{ doc:user:doc-nurbs.png|}} 
- 
-  nur = curset.add( NurbsCurve(number) ) 
-  nur.setDegree(degree)   
-  nur.push(pt1); nur.pushWeight(weight1) 
-  nur.push(pt2); nur.pushWeight(weight2)   
-  nur.pushKnot(knot1)   
-  nur.pushKnot(knot2)   
- 
-where 
-|< 30em - >| 
-| ''number'' | curve number |  
-| ''pt1'', ''pt2'' | ''[[doc:user:geometry:user:points]]'' used as supports |  
-| ''degree'' | degré de la coube |  
-| ''weight1'', ''weight2'' | weights|  
-| ''knot1'', ''knot2'' | knot vector |  
-| ''closed'' | Boolean to determine whether the Nurb is closed |  
-| ''obj'' | GObject support of a topology (curve,wire,group) |  
- 
- 
-===== PythonCurve: Python Interpreted Curves ===== 
-{{:doc:user:ico-advanced.png?40 |Advanced}} 
- 
-If a curve cannot be defined with the functions above, it can be programmed in [[doc:user:general:glossaire#python]], to avoid having to enter Metafor source code. 
- 
-''PythonCurve'' is the object to use. It is a regular curve, ''.push()'' is used to add points, and it possesses four functions that can be parametrized. ''setEval(fct)'' is used to defined the evaluation [[doc:user:tutorials:tuto0#fonctions|python function]]. 
-''setTg'', ''setDTg'' and''setLen()'' respectively define the tangent, its derivative and the curvilinear abscissa. The function ''setEval(fct)'' is required to mesh the curve, when the other three are used for contact. 
- 
-Once this new curve is defined, it can be shaped as the already existing one, with a class. For example, if a parabola has just been defined (cfr. ''toolbox.curves''), it can be used quite simply in a test case (cfr. ''apps.qs.parabola''): 
- 
-  from toolbox.curves import Parabola 
-  parab = curset.add(Parabola(1, pt1, pt6, pt2)) 
- 
-These lines create a parabola of user number 1, based on the three previously defined point pt1, pt6 and pt2. 
- 
- 
-  
- 
-  
doc/user/geometry/user/courbes.txt · Last modified: 2016/03/30 15:23 (external edit)