Part Loft Technical Details/fr

Cette page explique les détails de la façon dont le Loft surface est créée. C'est également pertinent pour le Balayage fait le long d'un chemin droit, même s'il existe des différences.

L'information fournie est mise en œuvre spécifiquement, et peut changer. L'état actuel est pertinent pour FreeCAD 0.15.4119, OCC: version 6.7.0.

Étapes de la création du Lissage
Pour expliquer le processus de lissage, il est commode de diviser en étapes:
 * 1) rendre le nombre de segments dans les profils égaux (s'ils ne le sont pas déjà)
 * 2) établir la correspondance entre les segments # réaliser la surface de lissage

Étape 1. Rendre le nombre de segments des profils identiques
Le Lissage a besoin d'un nombre de segments correcte afin de créer des surfaces entre les segments correspondants. Si le nombre de segments est correcte dans tous les profils, cette étape est ignorée.

Si au moins l'un des profils a un nombre différent de segments, la procédure suivante est appliquée. Par simplicité, la procédure est expliquée ici dans le cas de deux profiles seulement.
 * 1) Les Profils sont alignés temporairement de sorte qu'ils sont coplanaires et leurs centres de masses * correspondent.
 * 2) (Voir l'image) pour chaque sommet dans un même profil, le second profil est tranché dans le même angle polaire (le centre polaire est le centre de masse). Si il y a plus d'une tranche possible ou pas du tout de tranche possible (cela peut arriver sur des profils très convexes), le Lissage échoue généralement.
 * 3) On fait de même dans le direction opposée.

L'opération est étendue à tous les profils, pour obtenir le même nombre de segments. Le nombre total de segments dans chaque profil sera égale à la somme de tous les nombres de segments de tous les profils (à condition qu'aucun des sommets ne se trouvent être dans le même angle polaire).

{| style = "margin: 0 auto;" | |  |}

Step 2. Establishing correspondence between segments
In case numbers of segments in all profiles were not equal, slicing was done in Step 1, and the correspondence is trivial. In case numbers of segments in all profiles were equal, existing segments are used (see the picture), and this is when the correspondence must be established.

The exact algorithm to find corresponding segments is complex, but generally it tends to minimize the twisting of the resulting Loft. This means that if one is doing a loft between two squares, the maximum twist possible is <45°. Further rotation of one of the squares will cause the Loft to jump to other vertices.

The correspondence between neighboring profiles is made independently. This means that additional twisting can be obtained by adding more profiles.

Another thing to note is that when numbers of segments in profiles are equal, the resulting Loft is substantially more robust with respect to complex profiles, especially for non-convex ones.

Step 3. Making the loft surface.
If there are only two profiles, the surfaces created are ruled surfaces between corresponding segments of the profiles. Straight edges are created to connect corresponding vertices of the profiles.

If there are more than two profiles, the surfaces are made of splines in the same manner as straight lines form ruled surfaces. The imaginary splines the surface is "made of" are drawn through corresponding points of the corresponding segments of the profiles.

The splines are B-spline interpolation.
 * If the number of profiles is below 10, interpolation is done with by a B-spline with a maximum possible degree (i.e. degree = number_of_profiles - 1).
 * If the number of profiles exceeds 10, the interpolation is switched to 3rd degree B-splines.

The knotting method used is "approximate chord length". Approximate stands for the fact that the knot vector is exactly the same for every spline in a loft. For more info on what is B-spline interpolation, knot vector, chord length method, see, for example, cs.mtu.edu Curve Global Interpolation.

Note that Loft has a "Ruled" property. If it is set to true, ruled surfaces are made between neighboring profiles even when there's more than one profile. That is, B-spline interpolation is replaced by piecewise linear interpolation.

The essence

 * The loft is doing B-spline interpolation between the provided profiles. The interpolation is switched to piecewise linear when "Ruled" property is set to true.
 * When number of profiles exceeds 9, interpolation degree is dropped to 3. This switchover can substantially reduce wiggling.
 * Matching the number of segments (aka number of vertices) in the profiles allows one to give the loft a slight twist, and typically permits using more complex profiles.
 * When numbers of segments are not matched, it's best to keep the profiles to be representable by a proper r(phi) function in polar coordinates.

Additional remarks

 * It is not required that the profiles are parallel (see a picture below).
 * For Loft, it is not required that the profiles are separated (see a picture below). They can be coplanar, but they should not intersect.
 * When "closed" property of the Loft is "true", there is a cusp joint in all the splines forming the Loft (see a picture below). There is no reliable way to close the loft smoothly now.