There’s two common ways to approach this:

- A 2 dimensional object embedded in a 2+ dimensional space.
- An N-1 dimensional object embedded in an N dimensional space.

Let’s keep it simple for the time being and limit ourselves to 2-d surfaces and 3-d embedding spaces, as that is what almost all CAD programs deal with. In such a setting a surface can be defined as the set of loci along with adjacency relations (in topology I think these are called ‘neighbourhoods’ or ‘localities’, not 100% sure those are exactly the same thing.) When you have adjacencies, you can ‘walk’ along a surface by stepping from one locus onto any nearby locus, and as such travel along a path from one point to another. Not every mathematical surface is continuous, it can be made up of disjoint regions that share no neighbourhoods between them.

Add a distance metric to this entity and you graduate from topological surfaces to geometric surfaces.

Yes it’s an example. As are Nurbs surfaces and meshes. They are all *types* of surface, but the core notion of a surface is far broader than you could achieve with either nurbs or t-splines.

See me response to point #2.

Implicit surface equations and iso-surfaces are also types of surfaces that you often cannot represent with a single nurbs surface.

I was specifically talking about mapping of open sets to other open sets within a mathematical space. Trims are a B-Rep implementation details well beyond the generality of what surfaces are, and the fact that there’s a command called `_Patch`

is entirely incidental and unrelated.