Looking to contribute to this community? You must be signed in
Not a member? Register
Problems signing in? Check here
Establishing continuity across curve and surface patches is an important concept in Free Form Geometric modeling (GC - Free Form Geometry). There are different levels of continuity starting with the lowest level C0 and G0. C and G continuity will be used interchangeably here for simplicity reasons, but more in depth definitions can be found in computational geometry literature. C stands for parametric continuity and G stands for geometric continuity. C continuity is the more rigorous of the two.
C0 and G0 continuity stands for point continuity. Point continuity means two curves are connected at their respective EndPoints.
C1 and G1 continuity stands for curve tangency or continuity of tangency across two curves. In order for two curves to be C1 or G1 they also need to be connected at their EndPoints and are therefore C0 G0 as well. Tangency continuity means the tangent at the beginning of one curve is parallel to the tangent of the other curve and both share their origin point. In addition C1 requires the tangents to be of the same length as well. Remember that the first segment of the control polygon is also the tangent of the curve at the start and EndPoint.
C2 and G2 stands for continuity of curvature across two connected curves. Again all previous conditions have to be fulfilled in order for C2 and/or G2 to be possible. Continuity of curvature is important for reflection Lines for high quality surfaces. Automotive class surfaces usually attempt to achieve even higher continuity levels of G3/C3 but for architecture this level of surface quality is usually not necessary as it also requires high quality production methods usually too expensive for large scale constructs.
The first case is C0/G0 continuity between two independent BSplineCurves. Since the two curves share a common End/StartPoint (the point in the center) there is point continuity between the curves (and hence no gap).
The next level is C1/G1, or tangency between the curves. This is achieved by adjusting the last and the first segment of the control polygon of the two curves to be parallel and of equal length.
The last case is that of curvature continuity or C2/G2 continuity. Here we need to construct an auxiliary control polygon shown in turquoise arching over the parallel last and first segment of the two curves. Both C0 and C1 have to be fulfilled in order for C2 to be possible. In order to be C2 continuous the second leg of the control polygons of each curve has to be extended by its own length and the EndPoints of both need to meet in the same point.
The general case is the generating geometric method for BSplineCurves shown below. All control points are connected with Lines. On each Line rides a point. All points are connected in their T Parameter (GC - Parametric Space) and swept along the Lines. These points are again connected and finally one point remains. The last point on the innermost Line describes the BSplineCurve of Order 4 when the T parameter of all points is moved from 0 to 1. If one goes backwards one gets all the other curves of order 3 and two described by the each level of points. This principle is useful in understanding BSplineCurves but not essential for using GenerativeComponents, but shown for information only and also because this explanation can be elegantly constructed in the GenerativeComponents environment.
The first step shows creating a BSplineSurface of Order 2 with five control points. If we look at the middle row of points we can see that we have point continuity or C0/G0 within the polygonal surface across the middle (common) edge.
Now the advantage (and convenience) about being able to specify the Order of a surface is that we can switch to order 3 and thereby make it possible to create tangent continuity within the surface. Again the target for tangency is the middle pair of control points. As explained in the previous section for tangency the first legs of the respective control polygon have to be parallel and for parametric continuity of equal length. For simplicity, the set of six central points are all kept planar with equal distance in the X-Axis. This creates the control polygon condition needed for tangency as the respective segments on both sides of the middle pair of points we are studying are parallel and of equal length. Tangency has been achieved within an order 3 surface.
The next level is C2/G2 continuity, which gives continuity of curvature across the middle segment of the test surface. In order to achieve C2/G2 the tangency condition needs to also be fulfilled, so the inner six control points can stay from the previous state. What need to be adjusted are the outermost pairs of points. In addition we need to increase the order of the surface to four to make curvature continuity possible. In order to reduce the number of control points of the control polygon to ensure tangency between the surface strips one has to proceed as follows: The end pairs of control points of the two surfaces have to be connected with lines to a new pair of control points above the connection of the two surfaces. In order to enforce the tangency the second row of control points has to be placed at the respective midpoint of those lines. Once this is done the new control Polygon will form the gable-like form shown in the image. This is the same figure we created when generating the original BSplineCurve.
The same continuity principle applies to BSplineSurface patches. An example is shown here of two Order 3 patches. The first one on the right is modeled with 9 points. And then its boundary condition is used to construct the second patch as a tangent surface by projecting the control polygon outward and using the EndPoints as the second row of control points for the second patch.
The second surface patch is constructed using three points that are shared with the first patch along the edge, 3 points that are the end points of the tangents constructed from the control polygon for the first patch and three independent points at the far edge of the second patch.
When rendered in smooth mode one can see the tangency between the two patches which is preserved even when parametric changes are applied to the control points.
Understanding the underlying principles may seem initially unnecessary if one comes from normal CAD software environments where finding one geometric solution is sufficient to solve the problem. In parametric associative systems like GenerativeComponents it is possible and desirable though to edit and adapt the underlying definition of design geometry in response to changes in the design process. Therefore higher demands are put onto the geometric solutions. If one requires two curves to be tangent to each other in all cases for instance when a roof surface joins an adjacent roof, then it is crucial to implement the tangent condition parametrically so that it does not break when parametric edits are applied to either roof surface. There are many ways to establish such constraints and the examples shown here are only to establish some geometric basics to help in doing so.