EdgeContinuity Issues

I’ve been using EdgeContinuity, and while it seems to analyze tangency PERFECTLY (woo hoo!) I’m concerned that it’s giving me bad readings with respect to G2/curvature. I made a simple ball corner, and intentionally left some edges imperfect, then compared the result with VSR’s Global Matching Analysis. Most worrying - some edges that Rhino is saying are ok, VSR is saying the opposite. Also - none of the values are matching up like the do for tangency. For instance - the edge on the right that I call out in the video below - EdgeContinuity gives me a curvature value of 0.003 (0.005) - very good!

whereas VSR gives me a value of 0.79 - quite bad!

More weirdness - if you look at the “deviation comb” shown in V7 along the edge in question, and compare it to the edge above it here:

What catches my eye is that the comb on the edge on the right shows a higher amplitude than the edge above it, and yet Rhino sees that edge as 0.002 (1.000), which I would say means the matching along this edge is worse? As I say in the video, I’m not exactly sure how to interpret in real world usage what it means to have both these numbers (absolute and relative), but really my biggest worry is that I can’t trust the numbers Rhino is giving me.

Refit Trim_RH5_2.3dm (1.9 MB)

What is VSR actually reporting with that number? Rhino shows absolute difference in curvature (relative difference)

  • Absolute curvature deviation = (1/Radius1)-(1/Radius2)
  • Relative curvature deviation = (Radius1-Radius2)/(Radius1+Radius2)


Not sure to be honest, but neither of the Rhino numbers (0.003/0.005) are even remotely close to the VSR value (0.79), hence the worry.

If there are any folks out there who have access to say Alias/Catia or similar - would be super helpful if you can download the file I posted and see what those programs say the G2 continuity is across the edges in question.

From the VSR manual, on how they are measuring G2, at least relative to curve ends:

“In this mode, the curve curvatures at the corresponding curve end points will be compared. The resulting value is given as the difference between both curvature values divided by the sum of their absolute values. This yields a relative deviation of curvature values that can be interpreted as ratio of deviation (as a percentage) seen relatively to the total magnitude of curvature.”

hi sky.

I noticed that the edge contunuity command in rhino does not support other contunuity values,
it simply indicates the difference in numbers independently for each continuance.
(it is not in musure to tell you in general if the continuity is g1 or g2).

for example, if you put two edges far from each other, with bad tangency (assuming 2 °) while their curvatures are identical,
rhion tells you that the contunuity in curvature is perfect. while the edges do not even touch.

the same happens with tangency, if the distance is not right, rhino can’t tell,
it simply tells you the deviation of the angle in numbers, no more …

maybe VSR supports the value of tangency to calculate curvature,
which translates into this difference in values, which you showed in your video.

maybe I’m wrong.
I have no experience with VSR.

try to analyze these two surfaces
edge continuité.3dm (46.5 KB)

I would like to see what VSR will say. !?

1 Like

I would love to get your take then on what you feel the Rhino version is telling us, and how you interpret the numbers, especially relative vs absolute. Do you feel that as it currently stands, EdgeContinuity is useful for diagnosing G2 at edges or not?

A setup like this ought to tell us a bit about how the two relate -

CurvatureCheck.3dm (72.7 KB)


1 Like

As for those surface - as you made them, they are too far apart for VSR to work as is. VSR has a “Matching Tolerance” which you’ll see below, it basically means “if surfaces are farther apart than by this amount, do not analyze them”. After I move them close enough to trigger analysis, I get the following:

So, VSR says - definitely not tangent (21.58 degrees off) and definitely not curvature (0.98).

1 Like

Okay for that geometry - VSR gives us:

The G2 values for VSR are 0.60 and 0.33. This would indicate to me that VSR is displaying the relative value, and in this instance they agree. So, if this is the case - back to the original edge in question - my concern here is that VSR is showing a deviation of 0.79, and Rhino is showing one of 0.005 - these two are not even remotely close, and I’m frankly more inclined to believe the VSR number.

Hm, well, I’d just notice here that in all of these cases the surface is up against and edge of a surface that is basically linear - or planar, at the top- in which case radius of curvature is infinite (depending on what plane is measured) and the relative numbers become (I say) less meaningful. Notice the top edge (5) has an even larger number for G2 from VSR. Certainly there is nothing from say Zebra to suggest anything very nefarious is going on there.


1 Like

@pascal The equations above have “Absolute curvature deviation” based on curvature, ie 1/radius, and “Relative curvature deviation” based on radius, ie 1/curvature. Is that what EdgeContinuity actually uses?

Relative curvature deviation based on curvature would be (1/Radius1-1/Radius2)/(1/Radius1+1/Radius2)

I definitely get everything you’re saying here - my real concern is on jobs where there is an agreed upon G2 standard in the contract, and whether in those cases I can use EdgeContinuity as a true check on those things. On those jobs - often the surfacing is going to other packages (CATIA often) and gets checked for continuity on that end as well, and so there’s just a big uncertainty for me right now whether I can trust the EdgeContinuity numbers. I’m going to see if I can get some folks looped in who are using other CAD packages, and compare how they are seeing the original case I posted.

Right - I see that, and I think we did it the way we understood ‘most people are used to’ … but you’re right the description may be incorrect in Help.


to be honest, I too have some confusion about the relative values.
during modeling I often observe the absolute value I am used to analyzing this way.
I noticed that if the absolute values ​​are good, the zebra analysis is also good,
(it’s just my own experience)

I think that VSR also takes into account the tangency values, to calculate the continuity in curvature.

the higher the value of the tangency, the more the deffirence of the figures between VSR and rhino is consederable.

if you analyze two surfaces that have a minimal difference in tangency,
there won’t be much difference in numbers for the curvature between vsr and rhino.

try to analyze the curvature on geometry, with different tangece values,
and do the comparison.

I would like to see what it will give,
I am also questioned by this difference between rhino and vsr

maybe my suggestion is wrong

try to analyze with these surfaces.
surface analysis.3dm (78.4 KB)

I modified the tangency values ​​for all the edges intentionally, in parallel I kept the radii of curvature identical to 0.000

VSR is actually the same way - if something is G2, that does not guarantee that it’s G1. This makes sense to me in that the G2 analysis is looking at the value of the curvature - I think of this graphically like the difference between the curvature comb heights between surfaces, relative to each other. G1 is of course just looking at angle break, so in theory you could have the same height of curvature combs, but the combs don’t touch - so G1 fail, G2 pass. This is why it’s always helpful to look at both. So - your surface on the lower left, VSR sees as G2 but not G1. To me, this is actually sensible once I understood the logic behind it.

Okay now we’re making some progress - @pascal, if you download the file that @fares.boulamaali just posted, look at the three surfaces on the right. Check out their curvature graphs and zebras - they’re completely curvature dis-continuous - the surfaces are convex on one side, concave on the other. VSR sees all 3 as G2 fail:

Rhino V7 EdgeContinuity sees all three not just as G2, but as PERFECTLY G2:

I’m thinking there’s something wrong with the math on the Rhino side - again just looking at the curvature graph, there’s no way those surfaces on the right should measure as G2.

1 Like

Hm - well, I guess the edge checker is looking at the numbers, and not the direction, e.g:

@lowell - can you clarify at all?


I see that only the magnitude is compared, not the direction. Is that what you mean?