def test_easy_1(self): ul = [1, 2, 3, 4, 0, 1] pts = np.array([[0., 0.], [0.2, 0.1], [0.5, 0.1], [0.8, 0.1], [1., 0.]]) tri = PolyTri(pts, holes=False, delaunay=True) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_profile3(self): pts = np.array([[1., 0.], [0.88235294, 0.02298626], [0.76470588, 0.0448548], [0.64705882, 0.06526509], [0.52941176, 0.08372709], [0.41176471, 0.09930623], [0.29411765, 0.11005194], [0.17647059, 0.10961876], [0.07843137, 0.08925774], [0.01960784, 0.05267707], [0., 0.], [0.01960784, -0.02975812], [0.07843137, -0.04997027], [0.17647059, -0.06078761], [0.29411765, -0.06573109], [0.41176471, -0.06701299], [0.52941176, -0.06593259], [0.64705882, -0.06023152], [0.76470588, -0.04741638], [0.88235294, -0.02739101], [0.22420494, 0.02415623], [0.21767237, 0.04426139], [0.20056991, 0.05668706], [0.17943009, 0.05668706], [0.16232763, 0.04426139], [0.15579506, 0.02415623], [0.16232763, 0.00405107], [0.17943009, -0.0083746], [0.20056991, -0.0083746], [0.21767237, 0.00405107], [0.43345312, 0.016748], [0.42706414, 0.03641125], [0.41033758, 0.04856381], [0.38966242, 0.04856381], [0.37293586, 0.03641125], [0.36654688, 0.016748], [0.37293586, -0.00291525], [0.38966242, -0.01506781], [0.41033758, -0.01506781], [0.42706414, -0.00291525], [0.67018389, 0.00262844], [0.6653742, 0.01743116], [0.65278225, 0.02657975], [0.63721775, 0.02657975], [0.6246258, 0.01743116], [0.61981611, 0.00262844], [0.6246258, -0.01217428], [0.63721775, -0.02132286], [0.65278225, -0.02132286], [0.6653742, -0.01217428]]) boundaries = [[ 0, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 20], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 30], [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 40]] tri = PolyTri(pts, boundaries, delaunay=True, holes=True) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_profile(self): profile = [ 0, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ] hole = [24, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24] hole.reverse() pts = np.array([[1., 0.], [0.90196078, 0.01922532], [0.80392157, 0.0377041], [0.70588235, 0.05526607], [0.60784314, 0.07167488], [0.50980392, 0.08654832], [0.41176471, 0.09930623], [0.31372549, 0.10875978], [0.21568627, 0.11197072], [0.12254902, 0.10145591], [0.05446623, 0.07889333], [0.01361656, 0.04499772], [0., 0.], [0.01361656, -0.02548616], [0.05446623, -0.04430561], [0.12254902, -0.05642389], [0.21568627, -0.06297434], [0.31372549, -0.0661538], [0.41176471, -0.06701299], [0.50980392, -0.06625902], [0.60784314, -0.0629272], [0.70588235, -0.05471569], [0.80392157, -0.04154998], [0.90196078, -0.02334161], [0.22404773, 0.02395152], [0.21754519, 0.04396428], [0.20052133, 0.05633284], [0.17947867, 0.05633284], [0.16245481, 0.04396428], [0.15595227, 0.02395152], [0.16245481, 0.00393877], [0.17947867, -0.00842979], [0.20052133, -0.00842979], [0.21754519, 0.00393877]]) tri = PolyTri(pts, [hole], delaunay=False, holes=False) plt.triplot(*pts.T, tri.get_tris()) for i, p in enumerate(tri.pts): plt.annotate(str(i), p) plt.show()
def test_ellipse(self): outer_pts = np.array([np.cos(self.phi), np.sin(self.phi)]).T inner_pts = copy.copy(outer_pts) outer_pts *= np.array([1., 1.]) inner_pts *= 0.5 pts = np.array(list(inner_pts) + list(outer_pts)) tri = PolyTri(pts, [list(range(len(inner_pts))) + [0]], delaunay=True, holes=True) plt.figure(figsize=(10, 10)) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_constraint_edge_2(self): n = self.an_int x = np.linspace(0, np.pi, n) y = abs(np.sin(x)) - 1.1 pts = list(np.array([x, y]).T) pts.reverse() pts += list(np.array([[0., 0.], [np.pi, 0.]])) pts = np.array(pts) tri = PolyTri(pts, boundaries=[list(range(len(pts))) + [0]], holes=True, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_constraint_edge(self): n = self.an_int x = np.linspace(0, 1, n) y = np.array([0] * n) pts = np.array([x, y]).T pts_upper = pts[1:-1].copy() pts_upper[:, 1] += 0.1 pts[1:-1, 1] -= 0.1 cb = [[0, n - 1]] additional_pts = np.array([[-1., 0], [2, 0.]]) pts = np.array(list(pts) + list(pts_upper) + list(additional_pts)) tri = PolyTri(pts, cb, holes=False, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) for i, p in enumerate(pts): plt.annotate(str(i), p) plt.show()
def test_triangulization(self): tri = PolyTri(self.points, [self.inner_bound, self.outer_bound], delaunay=True, holes=True) plt.figure(figsize=(10, 10)) plt.triplot(*tri.pts.T, tri.tris) plt.show()
def test_profile2(self): pts = np.array([[1., 0.], [0.93079585, 0.01364559], [0.8615917, 0.02693948], [0.79238754, 0.03983196], [0.72318339, 0.05224763], [0.65397924, 0.06411011], [0.58477509, 0.07533044], [0.51557093, 0.08571854], [0.44636678, 0.09508809], [0.37716263, 0.10309254], [0.30795848, 0.10914777], [0.23875433, 0.11209604], [0.16961802, 0.10886508], [0.10855553, 0.09829529], [0.06106249, 0.08212217], [0.02713888, 0.06031021], [0.00678472, 0.03289393], [0., 0.], [0.00678472, -0.01869534], [0.02713888, -0.03406389], [0.06106249, -0.04609344], [0.10855553, -0.05478371], [0.16961802, -0.06033743], [0.23875433, -0.06399067], [0.30795848, -0.06603619], [0.37716263, -0.06691995], [0.44636678, -0.06690913], [0.51557093, -0.06617305], [0.58477509, -0.06412989], [0.65397924, -0.0596694], [0.72318339, -0.05275214], [0.79238754, -0.04337563], [0.8615917, -0.03145862], [0.93079585, -0.0170007], [0.22424641, 0.02420158], [0.21770592, 0.04433111], [0.20058272, 0.05677185], [0.17941728, 0.05677185], [0.16229408, 0.04433111], [0.15575359, 0.02420158], [0.16229408, 0.00407205], [0.17941728, -0.00836869], [0.20058272, -0.00836869], [0.21770592, 0.00407205], [0.43347349, 0.01676735], [0.42708062, 0.03644257], [0.41034388, 0.04860253], [0.38965612, 0.04860253], [0.37291938, 0.03644257], [0.36652651, 0.01676735], [0.37291938, -0.00290788], [0.38965612, -0.01506784], [0.41034388, -0.01506784], [0.42708062, -0.00290788], [0.67016282, 0.0026589], [0.66535715, 0.01744923], [0.65277574, 0.02659016], [0.63722426, 0.02659016], [0.62464285, 0.01744923], [0.61983718, 0.0026589], [0.62464285, -0.01213144], [0.63722426, -0.02127236], [0.65277574, -0.02127236], [0.66535715, -0.01213144]]) boundaries = [[ 0, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ], [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 34], [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 44], [54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 54]] tri = PolyTri(pts, boundaries, delaunay=False, holes=True) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_constraint_edge_1(self): n = self.an_int x = np.linspace(0, np.pi, n) y = abs(np.sin(x)) - 1.1 pts_inner = list(np.array([x, y]).T) pts_inner.reverse() pts_outer = list(np.array(pts_inner) * np.array([1., -1.])) pts_outer.reverse() pts = pts_inner + pts_outer cb = [list(range(len(pts_inner)))] cb += [list(np.array(range(len(pts_outer))) + max(cb[0]) + 1)] pts += list(np.array([[0., 0.], [np.pi, 0.]])) cb += [[len(pts) - 2, len(pts) - 1]] pts = np.array(pts) tri = PolyTri(np.array(pts), cb, border=[0, 1], holes=True, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_easy3(self): pts = np.array([[0., 0.], [0.2, 0.5], [0.4, 0.7], [0.6, 0.7], [0.8, 0.5], [1.0, 0.]]) tri = PolyTri(pts, holes=False, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_easy_3(self): pts = np.array([[-1., 0.], [1., 0.], [0., 0.5], [0., -0.5], [0., 1.]]) edge = [np.array([0, 1])] tri = PolyTri(pts, holes=False, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) plt.show()
def test_easy_2(self): pts = np.array([[-1, 0], [1, 0], [0., 0.5], [0., -0.5]]) edge = [np.array([2, 3])] tri = PolyTri(pts, edge, holes=False, delaunay=False) plt.triplot(*pts.T, tri.get_tris()) plt.show()
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from poly_tri_py import PolyTri ul = [[1, 2, 3, 4, 0, 1]] pts = np.array([[0., 0.], [0.2, 0.1], [0.5, 0.1], [0.8, 0.1], [1., 0.]]) tri = PolyTri(pts, delaunay=False) print(tri.get_tris())
[ 0.41176471, -0.06701299], [ 0.47058824, -0.06672403], [ 0.52941176, -0.06593259], [ 0.58823529, -0.0639694 ], [ 0.64705882, -0.06023152], [ 0.70588235, -0.05471569], [ 0.76470588, -0.04741638], [ 0.82352941, -0.03831459], [ 0.88235294, -0.02739101], [ 0.94117647, -0.0146261 ], [ 0.22433824, 0.02435338], [ 0.19 , 0.05869161], [ 0.15566176, 0.02435338], [ 0.19 , -0.00998486], [ 0.43349963, 0.01679296], [ 0.4 , 0.05029259], [ 0.36650037, 0.01679296], [ 0.4 , -0.01670667], [ 0.67019211, 0.00261792], [ 0.645 , 0.02781002], [ 0.61980789, 0.00261792], [ 0.645 , -0.02257419]]) boundaries = [[0, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0], [40, 41, 42, 43, 40], [44, 45, 46, 47, 44], [48, 49, 50, 51, 48]] tris = PolyTri(pts, boundaries, holes=True, delaunay=False).get_tris() # plt.triplot(*pts.T, tris)