def test_interpolate(self): # Straignt line x=y coords = [ Coordinate(0.0, 0.0), Coordinate(0.4, 0.4), Coordinate(0.8, 0.8), Coordinate(1.2, 1.2), ] s = Surface(coords) for i in range(100): val = i / 100.0 result = s.interpolate(val) assert result == Coordinate(val, val) # horizontal line y=0.5 coords = [ Coordinate(0.0, 0.5), Coordinate(0.4, 0.5), Coordinate(0.8, 0.5), Coordinate(1.2, 0.5), ] s = Surface(coords) for i in range(100): val = i / 100.0 result = s.interpolate(val) assert result == Coordinate(val, 0.5)
def test_interpolate_new_surface(self): coords = [ Coordinate(0.0, 0.0), Coordinate(0.4, 0.2), Coordinate(0.8, 0.4), Coordinate(1.2, 0.6), ] # make same surface s1 = Surface(coords) s2 = Surface(coords) length = 500 s3 = Surface.interpolate_new_surface(s1, s2, 10, 3, length) assert len(s3.coordinates) == length # test each original coordinate to see if it's the same # doesn't validate correctly on an interpolated foil but # works on our linear example for c in s1.coordinates: assert c == s3.interpolate(c.x) # also only works on our contrived example for i in range(len(s1.coordinates) - 1): c1 = coords[i] c2 = coords[i + 1] c3 = c1 + c2 c3 = c3 * 0.5 assert s1.interpolate(c3.x) == s3.interpolate(c3.x)