Revision: 55832
          http://sourceforge.net/p/brlcad/code/55832
Author:   starseeker
Date:     2013-06-24 20:51:29 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
Start easing the logic towards a similar form in the sans-knots subdivide.  
This has to be done very carefully to avoid unintential side effects.

Modified Paths:
--------------
    brlcad/trunk/src/libbrep/opennurbs_ext.cpp

Modified: brlcad/trunk/src/libbrep/opennurbs_ext.cpp
===================================================================
--- brlcad/trunk/src/libbrep/opennurbs_ext.cpp  2013-06-24 20:35:37 UTC (rev 
55831)
+++ brlcad/trunk/src/libbrep/opennurbs_ext.cpp  2013-06-24 20:51:29 UTC (rev 
55832)
@@ -1497,13 +1497,17 @@
        ON_Interval second(0.5, 1.0);
 
        if ((!isVFlat || (width/height > ratio)) && (!isUFlat || (height/width 
> ratio))) {
+           ON_Interval firstu(u.Min(), u.Mid());
+           ON_Interval secondu(u.Mid(), u.Max());
+           ON_Interval firstv(v.Min(), v.Mid());
+           ON_Interval secondv(v.Mid(), v.Max());
+           ON_BoundingBox box = localsurf->BoundingBox();
+
            ON_Surface *q0surf = NULL;
            ON_Surface *q1surf = NULL;
            ON_Surface *q2surf = NULL;
            ON_Surface *q3surf = NULL;
 
-           ON_BoundingBox box = localsurf->BoundingBox();
-
            bool split = ON_Surface_Quad_Split(localsurf, u, v, 
localsurf->Domain(0).Mid(), localsurf->Domain(1).Mid(), &q0surf, &q1surf, 
&q2surf, &q3surf);
            /* FIXME: this needs to be handled more gracefully */
            if (!split) {
@@ -1587,28 +1591,28 @@
            newframes[2] = frames[4];
            newframes[3] = sharedframes[1];
            newframes[4] = frames[5];
-           quads[0] = subdivideSurface(q0surf, u.ParameterAt(first), 
v.ParameterAt(first), newframes, divDepth+1, depthLimit);
+           quads[0] = subdivideSurface(q0surf, firstu, firstv, newframes, 
divDepth+1, depthLimit);
            delete q0surf;
            newframes[0] = sharedframes[0];
            newframes[1] = frames[1];
            newframes[2] = sharedframes[3];
            newframes[3] = frames[4];
            newframes[4] = frames[7];
-           quads[1] = subdivideSurface(q1surf, u.ParameterAt(second), 
v.ParameterAt(first), newframes, divDepth+1, depthLimit);
+           quads[1] = subdivideSurface(q1surf, secondu, firstv, newframes, 
divDepth+1, depthLimit);
            delete q1surf;
            newframes[0] = frames[4];
            newframes[1] = sharedframes[3];
            newframes[2] = frames[2];
            newframes[3] = sharedframes[2];
            newframes[4] = frames[8];
-           quads[2] = subdivideSurface(q2surf, u.ParameterAt(second), 
v.ParameterAt(second), newframes, divDepth+1, depthLimit);
+           quads[2] = subdivideSurface(q2surf, secondu, secondv, newframes, 
divDepth+1, depthLimit);
            delete q2surf;
            newframes[0] = sharedframes[1];
            newframes[1] = frames[4];
            newframes[2] = sharedframes[2];
            newframes[3] = frames[3];
            newframes[4] = frames[6];
-           quads[3] = subdivideSurface(q3surf, u.ParameterAt(first), 
v.ParameterAt(second), newframes, divDepth+1, depthLimit);
+           quads[3] = subdivideSurface(q3surf, firstu, secondv, newframes, 
divDepth+1, depthLimit);
            delete q3surf;
            bu_free(newframes, "free subsurface frames array");
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to