Revised existing boundary interpolation example shapes for consistency:

- all include the planar reference from documentation figures
    - all include the single polygon case (quad or tri)
    - all edge-only cases include semi-sharp boundary vertices
This commit is contained in:
barry 2020-01-10 14:24:29 -08:00
parent e088b3aa8b
commit eae467047b
4 changed files with 608 additions and 81 deletions

View File

@ -23,17 +23,165 @@
// //
static const std::string catmark_edgecorner = static const std::string catmark_edgecorner =
"# This file uses centimeters as units for non-parametric coordinates.\n" "#\n"
"\n" "# Test cases for BoundaryInterpolation option \"edge and corner\":\n"
"v -1.0 0.0 -1.0\n" "#\n"
"v 1.0 0.0 -1.0\n"
"v 1.0 0.0 1.0\n"
"v -1.0 0.0 1.0\n"
"vt 0.0 0.0\n"
"vt 1.0 0.0\n"
"vt 1.0 1.0\n"
"vt 0.0 1.0\n"
"f 1/1 2/2 3/3 4/4\n"
"t interpolateboundary 1/0/0 1\n" "t interpolateboundary 1/0/0 1\n"
"\n" "\n"
"#\n"
"# Shape 1: top-left\n"
"#\n"
"v -1.250 0.000 0.250\n"
"v -0.917 0.000 0.250\n"
"v -0.583 0.000 0.250\n"
"v -0.250 0.000 0.250\n"
"v -1.250 0.000 0.583\n"
"v -0.917 0.000 0.583\n"
"v -0.583 0.000 0.583\n"
"v -0.250 0.000 0.583\n"
"v -1.250 0.000 0.917\n"
"v -0.917 0.000 0.917\n"
"v -0.583 0.000 0.917\n"
"v -0.250 0.000 0.917\n"
"v -1.250 0.000 1.250\n"
"v -0.917 0.000 1.250\n"
"v -0.583 0.000 1.250\n"
"v -0.250 0.000 1.250\n"
"\n"
"vt 0.000 0.600\n"
"vt 0.133 0.600\n"
"vt 0.267 0.600\n"
"vt 0.400 0.600\n"
"vt 0.000 0.733\n"
"vt 0.133 0.733\n"
"vt 0.267 0.733\n"
"vt 0.400 0.733\n"
"vt 0.000 0.867\n"
"vt 0.133 0.867\n"
"vt 0.267 0.867\n"
"vt 0.400 0.867\n"
"vt 0.000 1.000\n"
"vt 0.133 1.000\n"
"vt 0.267 1.000\n"
"vt 0.400 1.000\n"
"\n"
"f 1/1 2/2 6/6 5/5 \n"
"f 2/2 3/3 7/7 6/6 \n"
"f 3/3 4/4 8/8 7/7 \n"
"f 5/5 6/6 10/10 9/9 \n"
"f 6/6 7/7 11/11 10/10 \n"
"f 7/7 8/8 12/12 11/11 \n"
"f 9/9 10/10 14/14 13/13 \n"
"f 10/10 11/11 15/15 14/14 \n"
"f 11/11 12/12 16/16 15/15 \n"
"\n"
"#\n"
"# Shape 2: top-right\n"
"#\n"
"v 0.250 0.000 0.250\n"
"v 0.583 -0.250 0.250\n"
"v 0.917 -0.250 0.250\n"
"v 1.250 0.000 0.250\n"
"v 0.250 0.000 0.583\n"
"v 0.583 -0.250 0.583\n"
"v 0.917 -0.250 0.583\n"
"v 1.250 0.000 0.583\n"
"v 0.250 0.000 0.917\n"
"v 0.583 -0.250 0.917\n"
"v 0.917 -0.250 0.917\n"
"v 1.250 0.000 0.917\n"
"v 0.250 0.000 1.250\n"
"v 0.583 -0.250 1.250\n"
"v 0.917 -0.250 1.250\n"
"v 1.250 0.000 1.250\n"
"\n"
"vt 0.600 0.600\n"
"vt 0.733 0.600\n"
"vt 0.867 0.600\n"
"vt 1.000 0.600\n"
"vt 0.600 0.733\n"
"vt 0.733 0.733\n"
"vt 0.867 0.733\n"
"vt 1.000 0.733\n"
"vt 0.600 0.867\n"
"vt 0.733 0.867\n"
"vt 0.867 0.867\n"
"vt 1.000 0.867\n"
"vt 0.600 1.000\n"
"vt 0.733 1.000\n"
"vt 0.867 1.000\n"
"vt 1.000 1.000\n"
"\n"
"f 17/17 18/18 22/22 21/21 \n"
"f 18/18 19/19 23/23 22/22 \n"
"f 19/19 20/20 24/24 23/23 \n"
"f 21/21 22/22 26/26 25/25 \n"
"f 22/22 23/23 27/27 26/26 \n"
"f 23/23 24/24 28/28 27/27 \n"
"f 25/25 26/26 30/30 29/29 \n"
"f 26/26 27/27 31/31 30/30 \n"
"f 27/27 28/28 32/32 31/31 \n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
"#\n"
"v -1.250 0.000 -1.250\n"
"v -0.917 -0.250 -1.250\n"
"v -0.583 -0.250 -1.250\n"
"v -0.250 0.000 -1.250\n"
"v -1.250 -0.250 -0.917\n"
"v -0.917 -0.250 -0.917\n"
"v -0.583 -0.250 -0.917\n"
"v -0.250 -0.250 -0.917\n"
"v -1.250 -0.250 -0.583\n"
"v -0.917 -0.250 -0.583\n"
"v -0.583 -0.250 -0.583\n"
"v -0.250 -0.250 -0.583\n"
"v -1.250 0.000 -0.250\n"
"v -0.917 -0.250 -0.250\n"
"v -0.583 -0.250 -0.250\n"
"v -0.250 0.000 -0.250\n"
"\n"
"vt 0.000 0.000\n"
"vt 0.133 0.000\n"
"vt 0.267 0.000\n"
"vt 0.400 0.000\n"
"vt 0.000 0.133\n"
"vt 0.133 0.133\n"
"vt 0.267 0.133\n"
"vt 0.400 0.133\n"
"vt 0.000 0.267\n"
"vt 0.133 0.267\n"
"vt 0.267 0.267\n"
"vt 0.400 0.267\n"
"vt 0.000 0.400\n"
"vt 0.133 0.400\n"
"vt 0.267 0.400\n"
"vt 0.400 0.400\n"
"\n"
"f 33/33 34/34 38/38 37/37 \n"
"f 34/34 35/35 39/39 38/38 \n"
"f 35/35 36/36 40/40 39/39 \n"
"f 37/37 38/38 42/42 41/41 \n"
"f 38/38 39/39 43/43 42/42 \n"
"f 39/39 40/40 44/44 43/43 \n"
"f 41/41 42/42 46/46 45/45 \n"
"f 42/42 43/43 47/47 46/46 \n"
"f 43/43 44/44 48/48 47/47 \n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
"#\n"
"v 0.250 0.000 -1.250\n"
"v 1.250 0.000 -1.250\n"
"v 0.250 0.000 -0.250\n"
"v 1.250 0.000 -0.250\n"
"\n"
"vt 0.600 0.000\n"
"vt 1.000 0.000\n"
"vt 0.600 0.400\n"
"vt 1.000 0.400\n"
"\n"
"f 49/49 50/50 52/52 51/51 \n"
"\n"
; ;

View File

@ -23,33 +23,143 @@
// //
static const std::string catmark_edgeonly = static const std::string catmark_edgeonly =
"# This file uses centimeters as units for non-parametric coordinates.\n" "#\n"
"\n" "# Test cases for BoundaryInterpolation option \"edge only\":\n"
"v -0.5 0 0.1\n" "#\n"
"v 0.5 0 0.1\n"
"v 0.5 0 1.1\n"
"v -0.5 0 1.1\n"
"v -1.1 0 -1.1\n"
"v -0.1 0 -1.1\n"
"v -0.1 0 -0.1\n"
"v -1.1 0 -0.1\n"
"v 0.1 0 -1.1\n"
"v 1.1 0 -1.1\n"
"v 1.1 0 -0.1\n"
"v 0.1 0 -0.1\n"
"vt 0.0 0.0\n"
"vt 1.0 0.0\n"
"vt 1.0 1.0\n"
"vt 0.0 1.0\n"
"f 1/1 2/2 3/3 4/4\n"
"f 5/1 6/2 7/3 8/4\n"
"f 9/1 10/2 11/3 12/4\n"
"t corner 1/1/0 4 10\n"
"t corner 1/1/0 6 10\n"
"t corner 1/1/0 8 10\n"
"t corner 1/1/0 9 10\n"
"t corner 1/1/0 10 10\n"
"t corner 1/1/0 11 10\n"
"t interpolateboundary 1/0/0 2\n" "t interpolateboundary 1/0/0 2\n"
"\n" "\n"
"#\n"
"# Shape 1: top-left\n"
"#\n"
"v -1.250 0.000 0.250\n"
"v -0.917 0.000 0.250\n"
"v -0.583 0.000 0.250\n"
"v -0.250 0.000 0.250\n"
"v -1.250 0.000 0.583\n"
"v -0.917 0.000 0.583\n"
"v -0.583 0.000 0.583\n"
"v -0.250 0.000 0.583\n"
"v -1.250 0.000 0.917\n"
"v -0.917 0.000 0.917\n"
"v -0.583 0.000 0.917\n"
"v -0.250 0.000 0.917\n"
"v -1.250 0.000 1.250\n"
"v -0.917 0.000 1.250\n"
"v -0.583 0.000 1.250\n"
"v -0.250 0.000 1.250\n"
"\n"
"vt 0.000 0.600\n"
"vt 0.133 0.600\n"
"vt 0.267 0.600\n"
"vt 0.400 0.600\n"
"vt 0.000 0.733\n"
"vt 0.133 0.733\n"
"vt 0.267 0.733\n"
"vt 0.400 0.733\n"
"vt 0.000 0.867\n"
"vt 0.133 0.867\n"
"vt 0.267 0.867\n"
"vt 0.400 0.867\n"
"vt 0.000 1.000\n"
"vt 0.133 1.000\n"
"vt 0.267 1.000\n"
"vt 0.400 1.000\n"
"\n"
"f 1/1 2/2 6/6 5/5 \n"
"f 2/2 3/3 7/7 6/6 \n"
"f 3/3 4/4 8/8 7/7 \n"
"f 5/5 6/6 10/10 9/9 \n"
"f 6/6 7/7 11/11 10/10 \n"
"f 7/7 8/8 12/12 11/11 \n"
"f 9/9 10/10 14/14 13/13 \n"
"f 10/10 11/11 15/15 14/14 \n"
"f 11/11 12/12 16/16 15/15 \n"
"\n"
"#\n"
"# Shape 2: top-right\n"
"#\n"
"v 0.250 0.000 0.250\n"
"v 0.583 -0.250 0.250\n"
"v 0.917 -0.250 0.250\n"
"v 1.250 0.000 0.250\n"
"v 0.250 0.000 0.583\n"
"v 0.583 -0.250 0.583\n"
"v 0.917 -0.250 0.583\n"
"v 1.250 0.000 0.583\n"
"v 0.250 0.000 0.917\n"
"v 0.583 -0.250 0.917\n"
"v 0.917 -0.250 0.917\n"
"v 1.250 0.000 0.917\n"
"v 0.250 0.000 1.250\n"
"v 0.583 -0.250 1.250\n"
"v 0.917 -0.250 1.250\n"
"v 1.250 0.000 1.250\n"
"\n"
"vt 0.600 0.600\n"
"vt 0.733 0.600\n"
"vt 0.867 0.600\n"
"vt 1.000 0.600\n"
"vt 0.600 0.733\n"
"vt 0.733 0.733\n"
"vt 0.867 0.733\n"
"vt 1.000 0.733\n"
"vt 0.600 0.867\n"
"vt 0.733 0.867\n"
"vt 0.867 0.867\n"
"vt 1.000 0.867\n"
"vt 0.600 1.000\n"
"vt 0.733 1.000\n"
"vt 0.867 1.000\n"
"vt 1.000 1.000\n"
"\n"
"f 17/17 18/18 22/22 21/21 \n"
"f 18/18 19/19 23/23 22/22 \n"
"f 19/19 20/20 24/24 23/23 \n"
"f 21/21 22/22 26/26 25/25 \n"
"f 22/22 23/23 27/27 26/26 \n"
"f 23/23 24/24 28/28 27/27 \n"
"f 25/25 26/26 30/30 29/29 \n"
"f 26/26 27/27 31/31 30/30 \n"
"f 27/27 28/28 32/32 31/31 \n"
"\n"
"# corner tags:\n"
"t corner 1/1/0 16 10.0\n"
"t corner 1/1/0 19 10.0\n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
"#\n"
"v -1.250 0.000 -1.250\n"
"v -0.250 0.000 -1.250\n"
"v -1.250 0.000 -0.250\n"
"v -0.250 0.000 -0.250\n"
"\n"
"vt 0.000 0.000\n"
"vt 0.400 0.000\n"
"vt 0.000 0.400\n"
"vt 0.400 0.400\n"
"\n"
"f 33/33 34/34 36/36 35/35 \n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
"#\n"
"v 0.250 0.000 -1.250\n"
"v 1.250 0.000 -1.250\n"
"v 0.250 0.000 -0.250\n"
"v 1.250 0.000 -0.250\n"
"\n"
"vt 0.600 0.000\n"
"vt 1.000 0.000\n"
"vt 0.600 0.400\n"
"vt 1.000 0.400\n"
"\n"
"f 37/37 38/38 40/40 39/39 \n"
"\n"
"# corner tags:\n"
"t corner 1/1/0 36 10.0\n"
"t corner 1/1/0 37 10.0\n"
"t corner 1/1/0 38 2.0\n"
"t corner 1/1/0 39 2.0\n"
"\n"
; ;

View File

@ -23,16 +23,178 @@
// //
static const std::string loop_triangle_edgecorner = static const std::string loop_triangle_edgecorner =
"v 0 0 0.866\n" "#\n"
"v -1 0 -0.866\n" "# Test cases for BoundaryInterpolation option \"edge and corner\":\n"
"v 1 0 -0.866\n" "#\n"
"\n"
"vt 0.5 0.866\n"
"vt 0.0 0.0\n"
"vt 1.0 0.0\n"
"\n"
"f 1/1 2/2 3/3\n"
"\n"
"t interpolateboundary 1/0/0 1\n" "t interpolateboundary 1/0/0 1\n"
"\n" "\n"
"#\n"
"# Shape 1: top-left\n"
"#\n"
"v -1.250 0.000 0.250\n"
"v -1.000 0.000 0.250\n"
"v -0.750 0.000 0.250\n"
"v -0.500 0.000 0.250\n"
"v -0.250 0.000 0.250\n"
"v -1.125 0.000 0.500\n"
"v -0.875 0.000 0.500\n"
"v -0.625 0.000 0.500\n"
"v -0.375 0.000 0.500\n"
"v -1.000 0.000 0.750\n"
"v -0.750 0.000 0.750\n"
"v -0.500 0.000 0.750\n"
"v -0.875 0.000 1.000\n"
"v -0.625 0.000 1.000\n"
"v -0.750 0.000 1.250\n"
"\n"
"vt 0.000 0.600\n"
"vt 0.100 0.600\n"
"vt 0.200 0.600\n"
"vt 0.300 0.600\n"
"vt 0.400 0.600\n"
"vt 0.050 0.700\n"
"vt 0.150 0.700\n"
"vt 0.250 0.700\n"
"vt 0.350 0.700\n"
"vt 0.100 0.800\n"
"vt 0.200 0.800\n"
"vt 0.300 0.800\n"
"vt 0.150 0.900\n"
"vt 0.250 0.900\n"
"vt 0.200 1.000\n"
"\n"
"f 1/1 2/2 6/6 \n"
"f 2/2 3/3 7/7 \n"
"f 3/3 4/4 8/8 \n"
"f 4/4 5/5 9/9 \n"
"f 2/2 7/7 6/6 \n"
"f 3/3 8/8 7/7 \n"
"f 4/4 9/9 8/8 \n"
"f 6/6 7/7 10/10 \n"
"f 7/7 8/8 11/11 \n"
"f 8/8 9/9 12/12 \n"
"f 7/7 11/11 10/10 \n"
"f 8/8 12/12 11/11 \n"
"f 10/10 11/11 13/13 \n"
"f 11/11 12/12 14/14 \n"
"f 11/11 14/14 13/13 \n"
"f 13/13 14/14 15/15 \n"
"\n"
"#\n"
"# Shape 2: top-right\n"
"#\n"
"v 0.250 0.000 0.250\n"
"v 0.500 0.000 0.250\n"
"v 0.750 -0.250 0.250\n"
"v 1.000 0.000 0.250\n"
"v 1.250 0.000 0.250\n"
"v 0.375 0.000 0.500\n"
"v 0.625 -0.250 0.500\n"
"v 0.875 -0.250 0.500\n"
"v 1.125 0.000 0.500\n"
"v 0.500 -0.250 0.750\n"
"v 0.750 -0.250 0.750\n"
"v 1.000 -0.250 0.750\n"
"v 0.625 0.000 1.000\n"
"v 0.875 0.000 1.000\n"
"v 0.750 0.000 1.250\n"
"\n"
"vt 0.600 0.600\n"
"vt 0.700 0.600\n"
"vt 0.800 0.600\n"
"vt 0.900 0.600\n"
"vt 1.000 0.600\n"
"vt 0.650 0.700\n"
"vt 0.750 0.700\n"
"vt 0.850 0.700\n"
"vt 0.950 0.700\n"
"vt 0.700 0.800\n"
"vt 0.800 0.800\n"
"vt 0.900 0.800\n"
"vt 0.750 0.900\n"
"vt 0.850 0.900\n"
"vt 0.800 1.000\n"
"\n"
"f 16/16 17/17 21/21 \n"
"f 17/17 18/18 22/22 \n"
"f 18/18 19/19 23/23 \n"
"f 19/19 20/20 24/24 \n"
"f 17/17 22/22 21/21 \n"
"f 18/18 23/23 22/22 \n"
"f 19/19 24/24 23/23 \n"
"f 21/21 22/22 25/25 \n"
"f 22/22 23/23 26/26 \n"
"f 23/23 24/24 27/27 \n"
"f 22/22 26/26 25/25 \n"
"f 23/23 27/27 26/26 \n"
"f 25/25 26/26 28/28 \n"
"f 26/26 27/27 29/29 \n"
"f 26/26 29/29 28/28 \n"
"f 28/28 29/29 30/30 \n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
"#\n"
"v -1.250 0.000 -1.250\n"
"v -1.000 -0.250 -1.250\n"
"v -0.750 -0.250 -1.250\n"
"v -0.500 -0.250 -1.250\n"
"v -0.250 0.000 -1.250\n"
"v -1.125 -0.250 -1.000\n"
"v -0.875 0.000 -1.000\n"
"v -0.625 0.000 -1.000\n"
"v -0.375 -0.250 -1.000\n"
"v -1.000 -0.250 -0.750\n"
"v -0.750 0.000 -0.750\n"
"v -0.500 -0.250 -0.750\n"
"v -0.875 -0.250 -0.500\n"
"v -0.625 -0.250 -0.500\n"
"v -0.750 0.000 -0.250\n"
"\n"
"vt 0.000 0.000\n"
"vt 0.100 0.000\n"
"vt 0.200 0.000\n"
"vt 0.300 0.000\n"
"vt 0.400 0.000\n"
"vt 0.050 0.100\n"
"vt 0.150 0.100\n"
"vt 0.250 0.100\n"
"vt 0.350 0.100\n"
"vt 0.100 0.200\n"
"vt 0.200 0.200\n"
"vt 0.300 0.200\n"
"vt 0.150 0.300\n"
"vt 0.250 0.300\n"
"vt 0.200 0.400\n"
"\n"
"f 31/31 32/32 36/36 \n"
"f 32/32 33/33 37/37 \n"
"f 33/33 34/34 38/38 \n"
"f 34/34 35/35 39/39 \n"
"f 32/32 37/37 36/36 \n"
"f 33/33 38/38 37/37 \n"
"f 34/34 39/39 38/38 \n"
"f 36/36 37/37 40/40 \n"
"f 37/37 38/38 41/41 \n"
"f 38/38 39/39 42/42 \n"
"f 37/37 41/41 40/40 \n"
"f 38/38 42/42 41/41 \n"
"f 40/40 41/41 43/43 \n"
"f 41/41 42/42 44/44 \n"
"f 41/41 44/44 43/43 \n"
"f 43/43 44/44 45/45 \n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
"#\n"
"v 0.250 0.000 -1.250\n"
"v 1.250 0.000 -1.250\n"
"v 0.750 0.000 -0.250\n"
"\n"
"vt 0.600 0.000\n"
"vt 1.000 0.000\n"
"vt 0.800 0.400\n"
"\n"
"f 46/46 47/47 48/48 \n"
"\n"
; ;

View File

@ -23,39 +23,146 @@
// //
static const std::string loop_triangle_edgeonly = static const std::string loop_triangle_edgeonly =
"v 0.0 0.0 0.966\n" "#\n"
"v -0.5 0.0 0.1\n" "# Test cases for BoundaryInterpolation option \"edge only\":\n"
"v 0.5 0.0 0.1\n" "#\n"
"\n"
"v -0.6 0.0 -0.234\n"
"v -1.1 0.0 -1.1\n"
"v -0.1 0.0 -1.1\n"
"\n"
"v 0.6 0.0 -0.234\n"
"v 0.1 0.0 -1.1\n"
"v 1.1 0.0 -1.1\n"
"\n"
"vt 0.5 0.933\n"
"vt 0.25 0.5\n"
"vt 0.75 0.5\n"
"vt 0.25 0.433\n"
"vt 0.0 0.0\n"
"vt 0.5 0.0\n"
"vt 0.75 0.433\n"
"vt 0.5 0.0\n"
"vt 1.0 0.0\n"
"\n"
"f 1/1 2/2 3/3\n"
"f 4/4 5/5 6/6\n"
"f 7/7 8/8 9/9\n"
"\n"
"t corner 1/1/0 4 10.0\n"
"t corner 1/1/0 5 10.0\n"
"\n"
"t corner 1/1/0 6 10.0\n"
"t corner 1/1/0 7 10.0\n"
"t corner 1/1/0 8 10.0\n"
"\n"
"t interpolateboundary 1/0/0 2\n" "t interpolateboundary 1/0/0 2\n"
"\n" "\n"
"#\n"
"# Shape 1: top-left\n"
"#\n"
"v -1.250 0.000 0.250\n"
"v -1.000 0.000 0.250\n"
"v -0.750 0.000 0.250\n"
"v -0.500 0.000 0.250\n"
"v -0.250 0.000 0.250\n"
"v -1.125 0.000 0.500\n"
"v -0.875 0.000 0.500\n"
"v -0.625 0.000 0.500\n"
"v -0.375 0.000 0.500\n"
"v -1.000 0.000 0.750\n"
"v -0.750 0.000 0.750\n"
"v -0.500 0.000 0.750\n"
"v -0.875 0.000 1.000\n"
"v -0.625 0.000 1.000\n"
"v -0.750 0.000 1.250\n"
"\n"
"vt 0.000 0.600\n"
"vt 0.100 0.600\n"
"vt 0.200 0.600\n"
"vt 0.300 0.600\n"
"vt 0.400 0.600\n"
"vt 0.050 0.700\n"
"vt 0.150 0.700\n"
"vt 0.250 0.700\n"
"vt 0.350 0.700\n"
"vt 0.100 0.800\n"
"vt 0.200 0.800\n"
"vt 0.300 0.800\n"
"vt 0.150 0.900\n"
"vt 0.250 0.900\n"
"vt 0.200 1.000\n"
"\n"
"f 1/1 2/2 6/6 \n"
"f 2/2 3/3 7/7 \n"
"f 3/3 4/4 8/8 \n"
"f 4/4 5/5 9/9 \n"
"f 2/2 7/7 6/6 \n"
"f 3/3 8/8 7/7 \n"
"f 4/4 9/9 8/8 \n"
"f 6/6 7/7 10/10 \n"
"f 7/7 8/8 11/11 \n"
"f 8/8 9/9 12/12 \n"
"f 7/7 11/11 10/10 \n"
"f 8/8 12/12 11/11 \n"
"f 10/10 11/11 13/13 \n"
"f 11/11 12/12 14/14 \n"
"f 11/11 14/14 13/13 \n"
"f 13/13 14/14 15/15 \n"
"\n"
"#\n"
"# Shape 2: top-right\n"
"#\n"
"v 0.250 0.000 0.250\n"
"v 0.500 0.000 0.250\n"
"v 0.750 -0.250 0.250\n"
"v 1.000 0.000 0.250\n"
"v 1.250 0.000 0.250\n"
"v 0.375 0.000 0.500\n"
"v 0.625 -0.250 0.500\n"
"v 0.875 -0.250 0.500\n"
"v 1.125 0.000 0.500\n"
"v 0.500 -0.250 0.750\n"
"v 0.750 -0.250 0.750\n"
"v 1.000 -0.250 0.750\n"
"v 0.625 0.000 1.000\n"
"v 0.875 0.000 1.000\n"
"v 0.750 0.000 1.250\n"
"\n"
"vt 0.600 0.600\n"
"vt 0.700 0.600\n"
"vt 0.800 0.600\n"
"vt 0.900 0.600\n"
"vt 1.000 0.600\n"
"vt 0.650 0.700\n"
"vt 0.750 0.700\n"
"vt 0.850 0.700\n"
"vt 0.950 0.700\n"
"vt 0.700 0.800\n"
"vt 0.800 0.800\n"
"vt 0.900 0.800\n"
"vt 0.750 0.900\n"
"vt 0.850 0.900\n"
"vt 0.800 1.000\n"
"\n"
"f 16/16 17/17 21/21 \n"
"f 17/17 18/18 22/22 \n"
"f 18/18 19/19 23/23 \n"
"f 19/19 20/20 24/24 \n"
"f 17/17 22/22 21/21 \n"
"f 18/18 23/23 22/22 \n"
"f 19/19 24/24 23/23 \n"
"f 21/21 22/22 25/25 \n"
"f 22/22 23/23 26/26 \n"
"f 23/23 24/24 27/27 \n"
"f 22/22 26/26 25/25 \n"
"f 23/23 27/27 26/26 \n"
"f 25/25 26/26 28/28 \n"
"f 26/26 27/27 29/29 \n"
"f 26/26 29/29 28/28 \n"
"f 28/28 29/29 30/30 \n"
"\n"
"t corner 1/1/0 15 10.0\n"
"t corner 1/1/0 19 10.0\n"
"\n"
"#\n"
"# Shape 3: bottom-left\n"
"#\n"
"v -1.250 0.000 -1.250\n"
"v -0.250 0.000 -1.250\n"
"v -0.750 0.000 -0.250\n"
"\n"
"vt 0.000 0.000\n"
"vt 0.400 0.000\n"
"vt 0.200 0.400\n"
"\n"
"f 31/31 32/32 33/33 \n"
"\n"
"#\n"
"# Shape 4: bottom-right\n"
"#\n"
"v 0.250 0.000 -1.250\n"
"v 1.250 0.000 -1.250\n"
"v 0.750 0.000 -0.250\n"
"\n"
"vt 0.600 0.000\n"
"vt 1.000 0.000\n"
"vt 0.800 0.400\n"
"\n"
"f 34/34 35/35 36/36 \n"
"\n"
"t corner 1/1/0 33 2.0\n"
"t corner 1/1/0 34 2.0\n"
"t corner 1/1/0 35 10.0\n"
"\n"
; ;