This is an old revision of the document!
Table of Contents
Surfaces
Definition
In Metafor, a Surface
is used to build a (Side)
limited by a Wire
.
The surface orientation, defined by its normal, is important in 3D contact.
Plane
A plane is defined by three points:
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 |
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}$.
Coons
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) )
with
number | user number (unique among surfaces and $\ge 1$) |
wire | the 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.
ruled = surfaceset.add( Ruled(number, curve1, curve2) )
with
number | user number (unique among surfaces and $\ge 1$) |
curve1 , curve2 , … | the 2 facing Curves |
Ruled surfaces can be used to create planes, if the two Curves
are coplanar Lines
, or cylinders if the curves are Arcs
.
NURBS
nur = surfaceset.add( NurbsSurface(number) ) nur.setDegreeU(degU) nur.setDegreeV(degV) nur.push(i1, j1, p1); nur.pushWeight(i1, j1, w1) nur.push(i2, j2, p2); nur.pushWeight(i2, j2, w2) nur.pushKnotU(knotu1) ... nur.pushKnotU(knotu2) nur.pushKnotV(knotv1) ... 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 |
Surface of revolution
revsur = surfaceset.add( RevolutionSurface(number, axe, wire) )
with
Sphere
c = Sphere(number, centerPoint, radius, reversed)
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 ! |
===== 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)
with
| number | user number (unique among surfaces and $\ge 1$) |
| axis | Line which defines the cylinder axis |
| radius | cylinder radius |
| ptGen | optional Point of the generating line of the cylinder. This point must be situated: 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 |