def test_tutorial(self):
     """Ensure the tutorial will work."""
     pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
     tris = (0, 1, 3, 1, 2, 3)
     interper = InterpLinear(pts, tris)
     val = interper.interpolate_to_point((2, 1, 0))
     self.assertEqual(0.5, val)
 def test_tri_containing_pt(self):
     """Getting tri containing point."""
     pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
     tris = (0, 1, 3, 1, 2, 3)
     interper = InterpLinear(pts, tris)
     ret = interper.triangle_containing_point((5, 5, 2))
     self.assertEqual(0, ret)
 def test_intperp_to_pts(self):
     """Interpolate to multiple points."""
     pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
     tris = (0, 1, 3, 1, 2, 3)
     interp_ = InterpLinear(pts, tris)
     ret = interp_.interpolate_to_points(((2, 1, 0), (5, 10, 2.5)))
     self.assertIsInstance(ret, tuple)
     self.assertEqual((0.5, 2.5), ret)
    def test_tri_envelops_containing_pt(self):
        """Getting tri containing point."""
        import numpy as np
        pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
        tris = (0, 1, 3, 1, 2, 3)

        interper = InterpLinear(pts, tris)
        ret = interper.triangle_envelopes_containing_point((5, 5, 2))
        np.testing.assert_array_equal(np.array([0, 3], np.int32), ret)
 def test_intperp_to_pts_numpy(self):
     """Interpolate to multiple points."""
     import numpy as np
     pts = np.array([(0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3)])
     tris = np.array([0, 1, 3, 1, 2, 3])
     interp_ = InterpLinear(pts, tris)
     ret = interp_.interpolate_to_points(np.array([(2, 1, 0), (5, 10, 2.5)]))
     self.assertIsInstance(ret, np.ndarray)
     np.testing.assert_array_equal(np.array([0.5, 2.5]), ret)
 def test_set_use_clough_tocher(self):
     """Test set_use_clough_tocher."""
     interper = self.interp_linear_obj
     observer = MockObserver()
     pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
     tris = (0, 1, 3, 1, 2, 3)
     interper = InterpLinear(pts, tris)
     interper.set_use_clough_tocher(True, observer)
     val = interper.interpolate_to_point((2, 1, 0))
     self.assertAlmostEqual(0.2574999928474426, val, places=9)
    def test_set_triangle_activity(self):
        """Setting tri activity."""
        pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
        tris = (0, 1, 3, 1, 2, 3)
        interper = InterpLinear(pts, tris)
        act1 = (True, False)
        interper.triangle_activity = act1

        act2 = (1, 1)
        interper.triangle_activity = act2
    def test_set_pt_activity(self):
        """Setting point activity."""
        pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
        tris = (0, 1, 3, 1, 2, 3)
        interper = InterpLinear(pts, tris)
        act1 = (True, False, False, True)
        interper.point_activity = act1

        act2 = (0, 1, 0, 1)
        interper.point_activity = act2
    def test_set_use_nat_neigh(self):
        """Test set_use_nat_neigh."""
        observer = MockObserver()
        pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
        tris = (0, 1, 3, 1, 2, 3)
        interper = InterpLinear(pts, tris)

        nodal_func = "constant"
        nodal_func_opts = "nearest_points"
        n_nearest = 12
        blend_weights = False
        interper.set_use_natural_neighbor(True, nodal_func, nodal_func_opts, n_nearest, blend_weights, observer)

        val = interper.interpolate_to_point((2, 1, 0))
        self.assertAlmostEqual(0.4600000, val, places=7)
    def test_constructor(self):
        """Test the PolyInput constructor."""
        outside_poly = ((1, 2, 0), (5, 2, 0), (5, 9, 0), (1, 9, 0))
        inside_polys = (((3, 3, 0), (2.5, 4, 0), (2, 3, 0)),
                        ((4, 8, 0), (3, 7, 0), (2, 8, 0)))
        poly_corners = (0, 1, 2, 3)
        bias = 3.14159
        pts = ((1, 0, 0), (10, 0, 0), (10, 10, 0))
        size_func = InterpLinear(pts)
        elev_func = InterpIdw(pts)

        pi = PolyInput(outside_polygon=outside_poly,
                       inside_polygons=inside_polys,
                       bias=bias,
                       size_function=size_func,
                       polygon_corners=poly_corners,
                       elevation_function=elev_func)
        self.assertIsInstance(pi, PolyInput)
        self.assert_arrays_equal(outside_poly, pi.outside_polygon)
        self.assert_inside_polys_equal(inside_polys, pi.inside_polygons)
        self.assertEqual(bias, pi.bias)
        # self.assertEqual(size_func.to_string(), pi.size_function.to_string())
        # self.assertEqual(elev_func.to_string(), pi.elevation_function.to_string())
        self.assertEqual(-1, pi.constant_size_bias)
        self.assertEqual(-1, pi.constant_size_function)
        self.assertEqual(False, pi.remove_internal_four_triangle_points)
    def test_interp_weights(self):
        """Test interp_weights."""
        import numpy as np
        pts = ((0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3))
        tris = (0, 1, 3, 1, 2, 3)
        interper = InterpLinear(pts, tris)

        pt_inside, idxs, wts = interper.interpolate_weights((5, 5, 2))
        self.assertTrue(pt_inside)
        np.testing.assert_array_equal(np.array([0, 1, 3], np.int32), idxs)
        np.testing.assert_array_equal(np.array([0, 0.5, 0.5]), wts)

        pt_inside, idxs, wts = interper.interpolate_weights((-10, -10, -10))
        self.assertFalse(pt_inside)
        np.testing.assert_array_equal(np.array([], np.int32), idxs)
        np.testing.assert_array_equal(np.array([]), wts)
    def test_properties(self):
        """Test the PolyInput properties."""
        out_poly = ((0, 0, 0), (1, 0, 0), (1, 1, 0), (0, 1, 0))
        pi = PolyInput(out_poly)
        outside_poly = ((1, 2, 0), (5, 2, 0), (5, 9, 0), (1, 9, 0))
        inside_polys = (((3, 3, 0), (2.5, 4, 0), (2, 3, 0)),
                        ((4, 8, 0), (3, 7, 0), (2, 8, 0)))
        poly_corners = (0, 1, 2, 3)
        pts = ((1, 2, 3), (4, 5, 6), (0, 5, 7))
        size_func = InterpLinear(pts)
        elev_func = InterpIdw(pts)
        seed_points = ((3, 3, 0), (4, 3, 0), (4, 8, 0), (3, 8, 0))
        relaxation_method = "spring_relaxation"

        self.assertEqual(4, len(pi.outside_polygon))
        pi.outside_polygon = outside_poly
        self.assert_arrays_equal(outside_poly, pi.outside_polygon)

        self.assertEqual(0, len(pi.inside_polygons))
        pi.inside_polygons = inside_polys
        self.assert_inside_polys_equal(inside_polys, pi.inside_polygons)

        self.assertEqual(0, len(pi.polygon_corners))
        pi.polygon_corners = poly_corners
        self.assert_arrays_equal(poly_corners, pi.polygon_corners)

        self.assertEqual(1.0, pi.bias)
        pi.bias = 0.3
        self.assertEqual(0.3, pi.bias)

        self.assertEqual(None, pi.size_function)
        pi.size_function = size_func
        # self.assertEqual(str(size_func), str(pi.size_function))

        self.assertEqual(None, pi.elevation_function)
        pi.elevation_function = elev_func
        # self.assertEqual(elev_func.to_string(), pi.elevation_function.to_string())

        self.assertEqual(-1, pi.constant_size_bias)
        pi.constant_size_bias = 4.0
        self.assertEqual(4.0, pi.constant_size_bias)

        self.assertEqual(-1, pi.constant_size_function)
        pi.constant_size_function = 1.2
        self.assertEqual(1.2, pi.constant_size_function)

        self.assertEqual(False, pi.remove_internal_four_triangle_points)
        pi.remove_internal_four_triangle_points = True
        self.assertEqual(True, pi.remove_internal_four_triangle_points)

        self.assertEqual(0, len(pi.seed_points))
        pi.seed_points = seed_points
        self.assert_arrays_equal(seed_points, pi.seed_points)

        self.assertEqual("", pi.relaxation_method)
        pi.relaxation_method = relaxation_method
        self.assertEqual(relaxation_method, pi.relaxation_method)
 def test_set_pts_tris(self):
     """Set base points."""
     # Test that the a proper call does not throw
     pts = ((0, 0, 0), (1, 1, 0), (1, 0, 0))
     tris = (0, 2, 1)
     interper = InterpLinear(pts, tris)
     base_string = '<InterpLinear - Point Count: 3, Triangle Count: 1>'
     rstr = repr(interper)
     self.assertEqual(base_string, rstr)
    def test_get_tris(self):
        """Getting interp object points."""
        import numpy as np
        pts = np.array([(0, 0, 0), (10, 0, 1), (10, 10, 2), (0, 10, 3)])
        tris = np.array([0, 1, 3, 1, 2, 3])
        interper = InterpLinear(pts, tris)

        ret = interper.triangles
        np.testing.assert_array_equal(tris, ret)
    def test_set_pts_tris_numpy(self):
        """Set base points."""
        import numpy as np

        # Test that the a proper call does not throw
        pts = np.array([(0, 0, 0), (1, 1, 0), (1, 0, 0)])
        tris = np.array([0, 2, 1])
        base_string = '<InterpLinear - Point Count: 3, Triangle Count: 1>'
        interper = InterpLinear(pts, tris)
        rstr = repr(interper)
        self.assertEqual(base_string, rstr)
Example #16
0
 def test_set_size_func_01(self):
     """Test setting the size function."""
     r = PolyRedistributePoints()
     pts = ((0, 0, 0), (1, 1, 0), (0, 1, 0))
     sf = InterpLinear(pts)
     r.set_size_func(sf)