I analyzed an edge of Brep which I got from GH Subd to Brep work flow with the Edge Continuity tool. It shows perfect G2(0.000), but not good G1(worst part is the middle of the edge, 1.77 degree)
I cannot understand it, because in my knowledge good G2 derives from good G1.
So, I asked ChatGPT.
My question:
OK. Let’s go back. So, it achieved G1 along the shared edge not in consistent quality, but along all the edge the G2 is perfect. Does that mean not good G1 can also derivate perfect G2?
GPT told me:
Mathematically, no—you cannot have perfect G2 without already having good G1.
However, what’s likely happening in Rhino is:
Your surfaces have inconsistent G1 along the edge (tangent quality varies, reaching a worst case of 1.77° in the middle).
Rhino’s G2 analysis reports “perfect” curvature continuity (0.000), but this is misleading.
Can “Not Good” G1 Still Lead to “Perfect” G2?
Not really—G2 depends on G1. But if Rhino reports G2 as perfect despite weak G1, here’s why:
Why Is G2 “Perfect” Despite Poor G1?
1. Rhino’s G2 Analysis Uses Different Criteria Than G1 Analysis
G1 is based on the angle between surface normals.
G2 is based on curvature (second derivative) values matching at the boundary.
If the curvature values match perfectly, Rhino may report “0.000” G2 even if the tangent angles are slightly off.
2. G1 Deviation Can Be Small Enough to Not Affect Curvature Much
If the 1.77° tangent error is localized and the overall curvature flow remains smooth, Rhino may still report perfect G2.
A small tangent mismatch doesn’t necessarily cause a big curvature mismatch.
3. Rhino Might Be Over-Smoothing the G2 Report
Rhino’s G2 continuity check rounds curvature values, so small variations can appear as “0.000” G2 error.
The deviation might still be there but too small for Rhino to show in the analysis tool.
GPT told me three reasons. I like to ask this forum which one is real.
Or is there another reason?
I think its debatable on what continuous means. As a former ICEM Surf user it is totally plausible that G2 does not require G1 or G0. Only G3 requires G2 to an certain extend but even here are special cases possible.
Its also plausible to assume that G2 connectivity requires G1, but how curved something is on a given point of measure does not tell you anything if it is directed the same.
G2 as a metric for surface quality is a bit overrated anyway. You should look on a quality G1 connection and rather prefer smoothness (distribution of curvature on the affected surfaces) over G2 continuity. Its worse to have bad G1 than bad G2. That rather makes sense from my point of view…
Gn (geometric) continuity, as defined by Barsky and DeRose in 1984 (1), requires G0 through Gn continuity. A curve or surface is not Gn continuous if it is not continuous at a lower level of continuity. This is directly analagous to the standard mathematical definition of Cn continuity which requires continuity of the 0 though nth derivative. Mathematicians understand this implicitly but it may not be obvious to NURBS modelers.
The reason for Gn geometric continuity is Cn continuity is defined as continuity of derivatives and therefor depends on the particular parameterization of the curve/surface. Gn continuity is based on shape only, not a specific parameterization. Two curves or surfaces can have different parameterizations and therefore different derivatives but be exactly the same shape.
Nowhere does EdgeContinuity say anything about the Gn level of continuity. Not on the panel, not on the command line and not in the Help. EdgeContinuity only shows the difference of the position, tangency angle or curvature between adjacent locations on the edges of the selected surfaces.
It is an incorrect to assume zero curvature difference means G2 continuity. As seen in the examples in this thread it is possible to have the same curvature but different tangent direction and positions. In those cases there is not G2 continuity.
In my understanding, if G1 is not good the curvature deviation cannot be 0.000. I asked AIs, they all said that is mathematically not possible in Rhino.
I am confused. Seems like the possible conclusion is one of below:
Edge Continuity is wrong, G2 analyzation should not show 0.000, because it is not.
AIs are wrong. In Rhino, even if the edge cannot reach G1, it still can achieve exceptionally good G2.
Edge Continuity and AIs are all right. The difference between the normal angles(G1) is indeed only 1.77 degree, and the Curvature deviation(G2) is indeed under the tolerance (0.001), but somehow, we should not consider it as G2, even though it looks G2 and showed as G2.
@Quan_Li You are confused because you continue to believe that “G2” and “curvature = 0.000” are the same thing.
“G2” and “curvature difference = 0.000” are not the same thing.
It is possible for the curvature on either side of and edge to be the same without the surfaces being tangent. See the example in post #2 by @Tom_P
For a curve or surface to be G2 continuous three conditions must be satisfied:
Position equal
Tangent angle equal
Curvature equal
If any of the conditions are not satisfied then the surface is not G2 continuous. In mathematics language curvature being equal is necessary but not sufficient for G2 continuous.
Ifposition equal, tangent angle equal, curvature equal then G2 continuous
If position equal, tangent angle equal, curvature not equal then NOT G2 continuous
If position equal, tangent angle not equal, curvature equal then NOT G2 continuous
Ifposition not equal, tangent angle equal, curvature equal then NOT G2 continuous
Etc.
EdgeContinuity does not show if a surface is G2 continuous. When in curvature mode it only shows if the curvature is equal, the difference if it s not equal.
So I subdivided the Subd and then converted the Subd into Brep. Then, the tangent is good (0.66), and the curvature is still 0.000. Now, can I consider that the edge is G2?