Surface Isocurve does not lie on surface

I have created a surface using the “Surface from 2,3 or 4 edge curves” tool and selecting 4 nurbs. I am trying to spread points on the surface in equal distances and for that I am trying to get Isocurves on the surface edges. The issue is: there are isocurves which fall outside the surface and there are (u,v) pairs for the surface where the points also lie outside the surface.

Is this a malformed surface or can (u,v) points within the domains of a surface in general lie outside the surface itself?
weird_surface.3dm (55.0 KB)

Are you assuming that the input curves to EdgeSrf should be isocurves of the resulting surface? This may or may not be correct depending on the input curves to EdgeCurves.

The input curves will be isocurves IF each end of the input curves coincides an the end of another edge curve.

However the are gaps between the ends of your input curves. When there are gaps EdgeSrf creates a surface with edges which do not coincide with the input curves. The input curves are not isocurves of the surface.

The List command used on the surface shows the (u.v) domains for the surface as:
surface[ 0]: TL_NurbsSurface u(-61.9911,0) v(0,54.2017)

How did you determine this?

Thanks for the reply. No, I am not assuming that and I can see this is not the case as the surface edges are visibly different from the original curves.

My goal is to sample points on the surface, so I divide the domain’s interval for each direction in equidistant segments and I use all combinations of (u,v) values to get points using the PointAt(u,v) function.

In the XY view, I can clearly see points lying outside the surface boundary edge (what is this shaded area underneath the edge? the surface is planar).

I have attached a Grasshopper c# script which reproduces my process of sampling points.
weird_surface_point_sampling.gh (3.7 KB)

1 Like

I was using wireframe mode and did not realize the surface was folded.

My guess is you are seeing a display artifact. In display modes other than wireframe (such as shaded) Rhino creates a faceted display mesh from the NURBS data, and that display mesh is used for the display. There are deviations between the faceted display mesh and the exact NURBS surface. With the folded surface the location of the fold in the mesh will deviate from the location of the fold in the NURBS surface.

The PointAt(u,v) function uses the NURBS math to get the exact location of the points (within the finite precision of the digital math). The deviation of the points from the displayed “surface” (which is actually a displayed mesh) is due to the deviation between the display mesh and the surface.

1 Like

I don’t understand how a planar surface can fold. Is it possible that the mathematical definition perfectly folds the surface on itself at this location?

If the above cannot hold, by focusing on the boundary edges being displayed and forgetting about the shading, there are still points lying outside the surface. When probing the brep face for its edges, the edge definitions are exactly as displayed by Rhino.

Yes, it is possible for a planar surface to fold.

The fold is not an edge.

I do not know of any method for extracting the fold as a curve.

Any x,y,z point coordinates created at a u,v location within the u,v domain of the surface will be on the mathematical surface, provided the correct parameters of the surface (control point locations and knot vectors) are used. (Unless there is a mistake in the algorithm for calculating the coordinates which I very strongly doubt.)

1 Like

Thanks for the clarification. If a fold is possible then the mystery is solved.

Your surface is an example of a file with a surface.