Derive interior net CV from control points of four edge curves?

Apologies if I’m not stating this correctly. The image shows the control polygons of four edge curves used with edgesrf. I’m trying to figure out how Rhino computes the new interior CV that defines the net for the surface along with the edge curve CVs. I can’t find a geometric relationship (and it doesn’t seem to follow the standard coons patch location as shown by the difference between the P11_actual and P11_calc in the adjacent model - at least according to ChatGPT Python code).

The surface is degree 2 with 3 CVs in both directions. I’m trying to demonstrate the manual plotting of points on the surface by linear interpolation (deCasteljau) and the only gap in my understanding is where the new interior net CV comes from.

Ideally there’d be a synthetic geometric way to find it, but perhaps that’s not possible?

Upload a .3dm file with your geometry.

The control points of the edges of a Coons Patch will exactly match the control point locations of the corresponding input curve. That is how the math of a Coons Patch works.

How did you obtain this code? What instructions were given to ChatGPT?

Coons patch formulation does not use linear interpolation nor deCasteljau formulation.
Coons patch - Wikipedia.

Method for single span degree 2 x 2 Coons patch from four degree 2 single span curves. (The proceedure is more complicated for multiple span surfaces.)
Loft with straight sections between two opposite curves. ChangeDegree of the lofted surface to degree 2 x 2.
Loft with straight sections between the other two curves. ChangeDegree of the lofted surface to degree 2 x 2.
PtSurface from four corner points. Change degree of the corner point surface to degree 2 x 2.

Coons patch control points:
(Vector math) Control point of first lofted surface + control point of second lofted surface - control point of bilinear corner point surface. This can be done numerically or graphically.

Example
CoonsPatchDemoDC.3dm (2.1 MB)

Perfect, David. Thank you for taking the time to provide a demo. That explains the graphic form of the vector math that was confusing to me. That is very helpful.

When I perform the steps you show, however, I get the same result as with the python script (so I suspect the script was accurately numerically calculating the steps as you listed them). Strangely, again, the constructed interior point is directly above the point of the edgeSrf net as given by Rhino. Perhaps Rhino’s edgeSrf uses some kind of custom Coons Patch variation? (left and center models in file)

As for the deCasteljau, what I meant was that, given the interior net control point, I can graphically construct isocurves and thus points on the surface with a deCasteljau approach. (red in right model in file)

EdgeSrfConstruction.3dm (273.7 KB)

How did you create this surface?

Here is that surface compared to what I get using EdgeSrf with the same four edge curves. The center control point is in a different location.

My guess is there is a mistake/typo/flaw in your ChatGPT generated code.

File with my surfaces, etc.
EdgeSrfConstructionDC01.3dm (2.4 MB)

Ah - good catch. Unfortunately, I think it’s human error on my part rather than anything to do with the script. I made the surface with edgeSrf originally. My best guess is that I unintentionally dragged the point in the z direction earlier on in the iterations and propagated it…

Dumb mistake, but good news, as now the graphic vector math technique you showed me solves the problem.

Thank you for your help, David. Much appreciated!

For anyone interested, you can graphically construct the three points required without making surfaces and changing their degree by the midpoints of straight connections from the control polygons as below: