0024227: Enable SS2 instructions for OCCT building
authorabv <abv@opencascade.com>
Thu, 10 Oct 2013 10:41:01 +0000 (14:41 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 10 Oct 2013 13:08:50 +0000 (17:08 +0400)
Test for exceptions corrected to handle FPE when built with with SSE2 option on Windows (NumericError raised instead of specific exceptions)
New test for performance of bspline intersections added

sse2 added; build bitness hardlinked to compiler

"bitness" variable was hidden

CMakeLists.txt
src/QABugs/QABugs_11.cxx
tests/perf/bspline/intersect [new file with mode: 0644]
tests/perf/grids.list

index f765036..e2ad451 100644 (file)
@@ -13,16 +13,13 @@ set_property(GLOBAL PROPERTY 3RDPARTY_USE_FOLDERS ON)
 
 set(BUILD_SHARED_LIBS ON)
 
-IF("${BUILD_TYPE}" STREQUAL "${CMAKE_BUILD_TYPE}" AND "${BUILD_BITNESS}" STREQUAL "${BUILD_BITNESS1}")
+IF("${BUILD_TYPE}" STREQUAL "${CMAKE_BUILD_TYPE}")
   SET(CHANGES_ARE_NEEDED OFF)
 ELSE()
   SET(CHANGES_ARE_NEEDED ON)
 ENDIF()
 
-set(BUILD_BITNESS 32 CACHE STRING "Bitness of the OCCT project")
-SET_PROPERTY(CACHE BUILD_BITNESS PROPERTY STRINGS 32 64)
-
-SET(BUILD_BITNESS1 ${BUILD_BITNESS} CACHE INTERNAL "Temporary bitness is created to check whether change 3rdparty paths or not" FORCE)
+MATH(EXPR COMPILER_BITNESS "32 + 32*(${CMAKE_SIZEOF_VOID_P}/8)")
 
 SET( CMAKE_BUILD_TYPE ${BUILD_TYPE} CACHE INTERNAL "Build type of the OCCT" FORCE )
 
@@ -54,7 +51,7 @@ else()
   SET(COMPILER ${CMAKE_GENERATOR})
 endif()
 
-if (${BUILD_BITNESS} STREQUAL 64)
+if (${COMPILER_BITNESS} STREQUAL 64)
   add_definitions(-D_OCC64)
 endif()
 
@@ -80,7 +77,10 @@ IF(WIN32)
   ENDIF()
 ENDIF()
 
-# set warning level 4
+# sse2
+add_definitions(/arch:SSE2)
+
+# warning level 4
 IF(MSVC)
   if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
     string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
@@ -135,9 +135,9 @@ ENDFUNCTION()
 FUNCTION(FIND_PRODUCT_DIR ROOT_DIR PRODUCT_NAME RESULT)
   string( TOLOWER "${PRODUCT_NAME}" lower_PRODUCT_NAME )
   
-  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${BUILD_BITNESS}")
-  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${BUILD_BITNESS}")
-  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${BUILD_BITNESS}")
+  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*${COMPILER}.*${COMPILER_BITNESS}")
+  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER}.*${COMPILER_BITNESS}")
+  LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+.*${COMPILER_BITNESS}")
   LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}.*[0-9.]+")
   LIST(APPEND SEARCH_TEMPLATES "${lower_PRODUCT_NAME}")
   
@@ -356,7 +356,7 @@ ENDIF()
 IF (3RDPARTY_USE_TBB)
   ADD_DEFINITIONS(-DHAVE_TBB)
 
-  IF(${BUILD_BITNESS} STREQUAL 32)
+  IF(${COMPILER_BITNESS} STREQUAL 32)
     SET (TBB_ARCH_NAME ia32)
   ELSE()
     SET (TBB_ARCH_NAME intel64)
index 69ab34d..06694ba 100755 (executable)
@@ -2464,13 +2464,13 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
       di << " 4.0 / 0.0 = " << res << "  Does not Caught... KO"<< "\n";
       Succes = Standard_False;
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_DivideByZero)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_DivideByZero) // Solaris, Windows w/o SSE2
     {
-      di << " Ok"<< "\n";
+      di << " Ok" << "\n";
+    }
+    catch(Standard_NumericError) // Linux, Windows with SSE2
+    {
+      di << " Ok" << "\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
@@ -2519,13 +2519,13 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
       di << "-- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... KO"<< "\n";
       Succes = Standard_False;
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_Overflow)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_Overflow) // Solaris, Windows w/o SSE2
     {
-      di << " Ok"<< "\n";
+      di << " Ok" << "\n";
+    }
+    catch(Standard_NumericError) // Linux, Windows with SSE2
+    {
+      di << " Ok" << "\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
@@ -2549,13 +2549,13 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
       //++++ Succes = Standard_False;
       di<<" -- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... (But) Ok"<<"\n";
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_Underflow)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_Underflow) // could be on Solaris, Windows w/o SSE2
     {
-      di << " Ok"<< "\n";
+      di << " Ok" << "\n";
+    }
+    catch(Standard_NumericError) // could be on Linux, Windows with SSE2
+    {
+      di << " Ok" << "\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
diff --git a/tests/perf/bspline/intersect b/tests/perf/bspline/intersect
new file mode 100644 (file)
index 0000000..b95a78f
--- /dev/null
@@ -0,0 +1,210 @@
+# Test performance of intersection of several NURBS surfaces
+
+bsplinesurf surf1 \
+3 4 0 4 1 1 2 1 3 4 \
+3 4 0 4 1 1 2 1 3 4 \
+0  0  0 1   2  0  0 1   3  0 15 1   5  0 15 1   7  0  0 1   10  0  0 1 \
+0  2  0 1   1  3  0 1   4  2 15 1   6  3 15 1   8  2  0 1   10  3  0 1 \
+0  4  0 1   3  4  0 1   4  3 15 1   5  3 15 1   7  4  0 1   10  5  0 1 \
+0  6  0 1   3  6  0 1   4  6 15 1   5  6 15 1   8  5  0 1   10  7  0 1 \
+0  8  0 1   2  8  0 1   4  8 15 1   6  8 15 1   7  7  0 1   10  8  0 1 \
+0 10  0 1   2 10  0 1   4 10 15 1   6 10 15 1   7 10  0 1   10 10  0 1
+
+bsplinesurf surf2 \
+3 4 0 4 1 1 2 1 3 4 \
+3 4 0 4 1 1 2 1 3 4 \
+0  0 10  1   2  0  5  1   3  0  4  1   5  0  6  1   7  0 10  1   10  0  5  1 \
+0  2  5  1   1  3  7  1   4  2  7  1   6  3  4  1   8  2  4  4   10  3  7  1 \
+0  4  8  1   3  4 10  1   4  3  6  1   5  3  8  1   7  4  7  4   10  5  5  1 \
+0  6  8  1   3  6 10  1   4  6  6  1   5  6  4  1   8  5  7  4   10  7 10  1 \
+0  8  6  1   2  8  5  1   4  8  8  1   6  8  8  1   7  7  3  4   10  8  5  1 \
+0 10  8  1   2 10 10  1   4 10  6  1   6 10  5  1   7 10  3  1   10 10 10  1
+
+bsplinesurf surf3 \
+2 7 0 3 1 1 2 1 3 1 4 1 5 1 6 3 \
+2 3 0 3 1 1 2 3 \
+-20  20  10  1   20  20  10  1    20 -20  10  1   -20 -20  10  1   -10  10  10  1   10  10  10  1   10 -10  10  1   -10 -10  10  1 \
+-10  10   5  1   15  15   5  1    10 -10   5  1   -15 -15   5  1    -5   5   5  1    5   5   5  1    5  -5   5  1    -5  -5   5  1 \
+-15  15  -5  1   10  10  -5  1    15 -15  -5  1   -10 -10  -5  1    -5   5  -5  1    5   5  -5  1    5  -5  -5  1    -5  -5  -5  1 \
+-20  20 -10  1   20  20 -10  1    20 -20 -10  1   -20 -20 -10  1   -10  10 -10  1   10  10 -10  1   10 -10 -10  1   -10 -10 -10  1
+
+bsplinesurf surf4 \
+4 5 0 5 2 1 4 1 5 1 6 5 \
+4 5 0 5 1 1 4 1 6 1 7 5 \
+ 10  20 -20 1     9  19 -19 1     8  18 -18 1     7  17 -17 1     7  17  17 1     8  18  18 1     9  19  19 1    10  20  20 1 \
+ 10 -20  20 1     9 -19  19 1     8 -18  18 1     7 -17  17 1     7 -17 -17 1     8 -18 -18 1     9 -19 -19 1    10 -20 -20 1 \
+ 10  10 -10 1     9   9  -9 1     8   8  -8 1     7   7  -7 1     7   7   7 1     8   8   8 1     9   9   9 1    10  10  10 1 \
+ 10 -10  10 1     9  -9   9 1     8  -8   8 1     7  -7   7 1     7  -7  -7 1     8  -8  -8 1     9  -9  -9 1    10 -10 -10 1 \
+-10  20 -20 1    -9  19 -19 1    -8  18 -18 1    -7  17 -17 1    -7  17  17 1    -8  18  18 1    -9  19  19 1   -10  20  20 1 \
+-10 -20  20 1    -9 -19  19 1    -8 -18  18 1    -7 -17  17 1    -7 -17 -17 1    -8 -18 -18 1    -9 -19 -19 1   -10 -20 -20 1 \
+-10  10 -10 1    -9   9  -9 1    -8   8  -8 1    -7   7  -7 1    -7   7   7 1    -8   8   8 1    -9   9   9 1   -10  10  10 1 \
+-10 -10  10 1    -9  -9   9 1    -8  -8   8 1    -7  -7   7 1    -7  -7  -7 1    -8  -8  -8 1    -9  -9  -9 1   -10 -10 -10 1
+
+bsplinesurf surf5 \
+1 2 0 2 1 2 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0 0 0 1 10 0 5 2 \
+0 10  2  1   10 10  3  1 \
+0 20 10  1   10 20 20  1 \
+0 30  0  1   10 30  0  1 \
+0 40 -1  1   10 40  5  1 \
+0 50  5  1   10 50  5  1 \
+0 60  4  1   10 60  4  1 \
+0 70 -5  1   10 70 -3  1 \
+0 80  7  1   10 80  0  1
+
+
+bsplinesurf surf6 \
+2 3 0 3 1 1 2 3 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0 0 0 1 2 0 0 1 5 0 -1 1 10 0 5 2 \
+0 10  2  1   3 10  0  1   8 10  5  1   10 10  3  1 \
+0 20 10  1   4 20  4  1   7 20  4  1   10 20 20  1 \
+0 30  0  1   2 30  0  1   8 30  0  1   10 30  0  1 \
+0 40 -1  1   4 40  5  1   9 40  1  1   10 40  5  1 \
+0 50  5  1   4 50 10  1   6 50 10  1   10 50  5  1 \
+0 60  4  1   3 60 -3  1   7 60 -4  1   10 60  4  1 \
+0 70 -5  1   3 70  0  1   5 70  0  1   10 70 -3  1 \
+0 80  7  1   3 80  1  1   7 80  3  1   10 80  0  1
+
+bsplinesurf surf7 \
+5 5 0 6 1 1 4 1 5 1 8 6 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0  0  0  1   2  0  0  1   5  0 -1  1   10  0  5  1   12  0  1  1   15  0 -3  1   16  0 -3  1   19  0 -4 1   24  0  0  1 \
+0 10  2  1   3 10  0  1   8 10  5  1   10 10  3  1   12 10  2  1   15 10  0  1   20 10  5  1   21 10  3 1   24 10  0  1 \
+0 20 10  1   4 20  4  1   7 20  4  1   10 20 20  1   12 20 10  1   16 20  4  1   19 20  4  1   20 20 10 1   24 20  0  1 \
+0 30  0  1   2 30  0  1   8 30  0  1   10 30  0  1   12 30  0  1   14 30  0  1   20 30  0  1   22 30  0 1   24 30  0  1 \
+0 40 -1  1   4 40  5  1   9 40  1  1   10 40  5  1   12 40 -1  1   16 40  5  1   21 40  1  1   22 40  5 1   24 40  0  1 \
+0 50  5  1   4 50 10  1   6 50 10  1   10 50  5  1   12 50  5  1   16 50 10  1   18 50 10  1   20 50  5 1   24 50  0  1 \
+0 60  4  1   3 60 -3  1   7 60 -4  1   10 60  4  1   12 60  4  1   15 60 -3  1   19 60 -4  1   20 60  4 1   24 60  0  1 \
+0 70 -5  1   3 70  0  1   5 70  0  1   10 70 -3  1   12 70 -5  1   15 70  0  1   17 70  0  1   20 70 -3 1   24 70  0  1 \
+0 80  7  1   3 80  1  1   7 80  3  1   10 80  0  1   12 80  7  1   15 80  1  1   19 80  3  1   21 80  0 1   24 80  0  1
+
+bsplinesurf surf8 \
+5 5 0 6 1 1 4 1 5 1 8 6 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0  0 -8  1   2  0 -7  1   5  0 -9  1   10  0 -8  1   12  0 -9  1   15  0 -7  1   16  0 -8  1   19  0 -8 1   24  0 -8  1 \
+0 10 -8  1   3 10 -7  1   8 10 -9  1   10 10 -8  1   12 10 -9  1   15 10 -7  1   20 10 -8  1   21 10 -8 1   24 10 -8  1 \
+0 20  8  1   4 20  7  1   7 20  9  1   10 20  8  1   12 20  9  1   16 20  7  1   19 20  8  1   20 20  8 1   24 20  8  1 \
+0 30  8  1   2 30  7  1   8 30  9  1   10 30  8  1   12 30  9  1   14 30  7  1   20 30  8  1   22 30  8 1   24 30  8  1 \
+0 40 -8  1   4 40 -7  1   9 40 -9  1   10 40 -8  1   12 40 -9  1   16 40 -7  1   21 40 -8  1   22 40 -8 1   24 40 -8  1 \
+0 50 -8  1   4 50 -7  1   6 50 -9  1   10 50 -8  1   12 50 -9  1   16 50 -7  1   18 50 -8  1   20 50 -8 1   24 50 -8  1 \
+0 60  8  1   3 60  7  1   7 60  9  1   10 60  8  1   12 60  9  1   15 60  7  1   19 60  8  1   20 60  8 1   24 60  8  1 \
+0 70  8  1   3 70  7  1   5 70  9  1   10 70  8  1   12 70  9  1   15 70  7  1   17 70  8  1   20 70  8 1   24 70  8  1 \
+0 80  8  1   3 80  7  1   7 80  9  1   10 80  8  1   12 80  9  1   15 80  7  1   19 80  8  1   21 80  8 1   24 80  8  1
+
+bsplinesurf rsurf1 \
+3 4 0 4 1 1 2 1 3 4 \
+3 4 0 4 1 1 2 1 3 4 \
+0  0  0 1   2  0  0 1   3  0 15 1   5  0 15 1   7  0  0 1   10  0  0 1 \
+0  2  0 1   1  3  0 2   4  2 15 2   6  3 15 2   8  2  0 2   10  3  0 1 \
+0  4  0 1   3  4  0 2   4  3 15 3   5  3 15 3   7  4  0 2   10  5  0 1 \
+0  6  0 1   3  6  0 2   4  6 15 3   5  6 15 3   8  5  0 2   10  7  0 1 \
+0  8  0 1   2  8  0 2   4  8 15 2   6  8 15 2   7  7  0 2   10  8  0 1 \
+0 10  0 1   2 10  0 1   4 10 15 1   6 10 15 1   7 10  0 1   10 10  0 1
+
+bsplinesurf rsurf2 \
+3 4 0 4 1 1 2 1 3 4 \
+3 4 0 4 1 1 2 1 3 4 \
+0  0 10  1   2  0  5  1   3  0  4  1   5  0  6  1   7  0 10  1   10  0  5  1 \
+0  2  5  1   1  3  7  4   4  2  7  4   6  3  4  4   8  2  4  4   10  3  7  1 \
+0  4  8  1   3  4 10  4   4  3  6  2   5  3  8  2   7  4  7  4   10  5  5  1 \
+0  6  8  1   3  6 10  4   4  6  6  2   5  6  4  2   8  5  7  4   10  7 10  1 \
+0  8  6  1   2  8  5  4   4  8  8  4   6  8  8  4   7  7  3  4   10  8  5  1 \
+0 10  8  1   2 10 10  1   4 10  6  1   6 10  5  1   7 10  3  1   10 10 10  1
+
+bsplinesurf rsurf3 \
+2 7 0 3 1 1 2 1 3 1 4 1 5 1 6 3 \
+2 3 0 3 1 1 2 3 \
+-20  20  10  1   20  20  10  1    20 -20  10  2   -20 -20  10 2   -10  10  10  3   10  10  10  4   10 -10  10  4   -10 -10  10  2 \
+-10  10   5  1   15  15   5  2    10 -10   5  3   -15 -15   5 1    -5   5   5  1    5   5   5  3    5  -5   5  4    -5  -5   5  3 \
+-15  15  -5  3   10  10  -5  1    15 -15  -5  2   -10 -10  -5 2    -5   5  -5  3    5   5  -5  3    5  -5  -5  1    -5  -5  -5  4 \
+-20  20 -10  2   20  20 -10  4    20 -20 -10  3   -20 -20 -10 3   -10  10 -10  2   10  10 -10  2   10 -10 -10  1   -10 -10 -10  1
+
+bsplinesurf rsurf4 \
+4 5 0 5 2 1 4 1 5 1 6 5 \
+4 5 0 5 1 1 4 1 6 1 7 5 \
+ 10  20 -20 1     9  19 -19 1     8  18 -18 2     7  17 -17 2     7  17  17 1     8  18  18 1     9  19  19 4    10  20  20 1 \
+ 10 -20  20 2     9 -19  19 2     8 -18  18 1     7 -17  17 2     7 -17 -17 4     8 -18 -18 3     9 -19 -19 3    10 -20 -20 2 \
+ 10  10 -10 3     9   9  -9 4     8   8  -8 1     7   7  -7 2     7   7   7 4     8   8   8 1     9   9   9 2    10  10  10 3 \
+ 10 -10  10 4     9  -9   9 2     8  -8   8 3     7  -7   7 2     7  -7  -7 1     8  -8  -8 1     9  -9  -9 1    10 -10 -10 4 \
+-10  20 -20 4    -9  19 -19 3    -8  18 -18 3    -7  17 -17 2    -7  17  17 1    -8  18  18 2    -9  19  19 4   -10  20  20 4 \
+-10 -20  20 3    -9 -19  19 2    -8 -18  18 3    -7 -17  17 1    -7 -17 -17 4    -8 -18 -18 2    -9 -19 -19 3   -10 -20 -20 3 \
+-10  10 -10 2    -9   9  -9 1    -8   8  -8 3    -7   7  -7 1    -7   7   7 1    -8   8   8 1    -9   9   9 2   -10  10  10 2 \
+-10 -10  10 1    -9  -9   9 1    -8  -8   8 2    -7  -7   7 1    -7  -7  -7 4    -8  -8  -8 1    -9  -9  -9 1   -10 -10 -10 1
+
+bsplinesurf rsurf5 \
+1 2 0 2 1 2 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0 0 0 1 10 0 5 2 \
+0 10  2  3   10 10  3  1 \
+0 20 10  1   10 20 20  4 \
+0 30  0  2   10 30  0  2 \
+0 40 -1  1   10 40  5  2 \
+0 50  5  1   10 50  5  1 \
+0 60  4  3   10 60  4  1 \
+0 70 -5  5   10 70 -3  2 \
+0 80  7  1   10 80  0  1
+
+bsplinesurf rsurf6 \
+2 3 0 3 1 1 2 3 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0 0 0 1 2 0 0 1 5 0 -1 1 10 0 5 2 \
+0 10  2  3   3 10  0  1   8 10  5  3   10 10  3  1 \
+0 20 10  1   4 20  4  3   7 20  4  2   10 20 20  4 \
+0 30  0  2   2 30  0  1   8 30  0  1   10 30  0  2 \
+0 40 -1  1   4 40  5  2   9 40  1  3   10 40  5  2 \
+0 50  5  1   4 50 10  5   6 50 10  5   10 50  5  1 \
+0 60  4  3   3 60 -3  1   7 60 -4  1   10 60  4  1 \
+0 70 -5  5   3 70  0  1   5 70  0  1   10 70 -3  2 \
+0 80  7  1   3 80  1  2   7 80  3  1   10 80  0  1
+
+bsplinesurf rsurf7 \
+5 5 0 6 1 1 4 1 5 1 8 6 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0  0  0  1   2  0  0  1   5  0 -1  1   10  0  5  2   12  0  1  1   15  0 -3  2   16  0 -3  1   19  0 -4 1   24  0  0  1 \
+0 10  2  3   3 10  0  1   8 10  5  3   10 10  3  1   12 10  2  3   15 10  0  1   20 10  5  3   21 10  3 1   24 10  0  2 \
+0 20 10  1   4 20  4  3   7 20  4  2   10 20 20  4   12 20 10  1   16 20  4  3   19 20  4  2   20 20 10 4   24 20  0  1 \
+0 30  0  2   2 30  0  1   8 30  0  1   10 30  0  2   12 30  0  2   14 30  0  1   20 30  0  1   22 30  0 2   24 30  0  3 \
+0 40 -1  1   4 40  5  2   9 40  1  3   10 40  5  2   12 40 -1  1   16 40  5  2   21 40  1  3   22 40  5 2   24 40  0  1 \
+0 50  5  1   4 50 10  5   6 50 10  5   10 50  5  1   12 50  5  1   16 50 10  5   18 50 10  5   20 50  5 1   24 50  0  2 \
+0 60  4  3   3 60 -3  1   7 60 -4  1   10 60  4  1   12 60  4  3   15 60 -3  1   19 60 -4  1   20 60  4 1   24 60  0  1 \
+0 70 -5  5   3 70  0  1   5 70  0  1   10 70 -3  2   12 70 -5  5   15 70  0  1   17 70  0  1   20 70 -3 2   24 70  0  3 \
+0 80  7  1   3 80  1  2   7 80  3  1   10 80  0  1   12 80  7  1   15 80  1  2   19 80  3  1   21 80  0 1   24 80  0  1
+
+bsplinesurf rsurf8 \
+5 5 0 6 1 1 4 1 5 1 8 6 \
+5 5 0 6 2 1 3 1 6 1 7 6 \
+0  0 -8  1   2  0 -7  1   5  0 -9  1   10  0 -8  2   12  0 -9  1   15  0 -7  2   16  0 -8  1   19  0 -8 1   24  0 -8  1 \
+0 10 -8  3   3 10 -7  1   8 10 -9  3   10 10 -8  1   12 10 -9  3   15 10 -7  1   20 10 -8  3   21 10 -8 1   24 10 -8  2 \
+0 20  8  1   4 20  7  3   7 20  9  2   10 20  8  4   12 20  9  1   16 20  7  3   19 20  8  2   20 20  8 4   24 20  8  1 \
+0 30  8  2   2 30  7  1   8 30  9  1   10 30  8  2   12 30  9  2   14 30  7  1   20 30  8  1   22 30  8 2   24 30  8  3 \
+0 40 -8  1   4 40 -7  2   9 40 -9  3   10 40 -8  2   12 40 -9  1   16 40 -7  2   21 40 -8  3   22 40 -8 2   24 40 -8  1 \
+0 50 -8  1   4 50 -7  5   6 50 -9  5   10 50 -8  1   12 50 -9  1   16 50 -7  5   18 50 -8  5   20 50 -8 1   24 50 -8  2 \
+0 60  8  3   3 60  7  1   7 60  9  1   10 60  8  1   12 60  9  3   15 60  7  1   19 60  8  1   20 60  8 1   24 60  8  1 \
+0 70  8  5   3 70  7  1   5 70  9  1   10 70  8  2   12 70  9  5   15 70  7  1   17 70  8  1   20 70  8 2   24 70  8  3 \
+0 80  8  1   3 80  7  2   7 80  9  1   10 80  8  1   12 80  9  1   15 80  7  2   19 80  8  1   21 80  8 1   24 80  8  1
+
+# intersect all surfaces
+set surfaces [list surf1 surf2 rsurf1 surf3 rsurf2 surf4 rsurf3 surf5 rsurf4 surf6 rsurf5 surf7 rsurf6 surf8 rsurf7 rsurf8]
+#set i 1
+#set shapes {}
+foreach s1 $surfaces {
+#    mkface f_$s1 $s1
+#    lappend shapes f_$s1
+    foreach s2 $surfaces {
+        if { $s1 != $s2 } {
+            intersect r $s1 $s2
+#            if { [regexp {a 3d curve} [whatis r]] } {
+#                mkedge e_$i r
+#                lappend shapes e_$i
+#                incr i
+#            }
+        }
+    }
+}
+
+# call vinit just to prepare for snapshot
+#eval vdisplay $shapes
+vinit
+fit
index b6ff3b8..1a558e7 100644 (file)
@@ -14,4 +14,4 @@
 014 single_object_selection
 015 single_object_shading
 016 single_object_wireframe
-
+017 bspline