In [2]:
from shapeanalyzer.utilities import TinyQueue
from shapeanalyzer.skeletons import StraightSkeleton
from shapeanalyzer.shapes import *
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
plt.axis("equal")
fig_size = [10,10]
plt.rcParams["figure.figsize"] = fig_size
fp = open("data/poly.csv")
lines = fp.readlines()
fp.close()
del lines[0]
data = []
points =[]
for l in lines:
pid, x, y = l.strip().split(",")
data.append([float(x), float(y)])
points.append(Point(x,y))
data = np.asarray(data)
poly = Polygon(points)
ssk = StraightSkeleton(poly)
skes = ssk.skeleton()
#print skes
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
#plt.plot(data[:,0],-data[:,1])
plt.axis('scaled')
plt.show()
In [3]:
data =np.array([[40, 50],
[40, 520],
[625,425],
[500,325],
[635,250],
[635,10],
[250,40],
[200,200],
[100,50]])
data[:,1] = data[:,1] *-1 + 600
points = []
for d in data:
points.append(Point(d[0], d[1]))
poly = Polygon(points)
ssk = StraightSkeleton(poly)
skes = ssk.skeleton()
#print skes
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
#plt.plot(data[:,0],-data[:,1])
plt.axis('scaled')
plt.show()
In [4]:
pts = [Point(10, 10), Point(70, 10), Point(70, 40), Point(10, 40)]
polygon = Polygon(pts)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
data = [pt.coords() for pt in pts]
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axis('scaled')
plt.show()
In [5]:
pts = [Point(30, 20), Point(30, 120), Point(53, 88), Point(90, 117), Point(122, 56),Point(160, 140),Point(178, 93), Point(160, 20)]
#pts = [Point(30, 20), Point(38, 120), Point(53, 88), Point(90, 117), Point(160, 140),Point(178, 93), Point(160, 20)]
polygon = Polygon(pts)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
data = [pt.coords() for pt in pts]
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axis('scaled')
plt.show()
In [6]:
data =np.array([[40, 50],
[40, 520],
[625,425],
[500,325],
[635,250],
[635,10],
[250,40],
[200,200],
[100,50]])
data[:,1] = data[:,1] *-1 + 600
points = []
for d in data:
points.append(Point(d[0], d[1]))
inters = [[Point(170, 300), Point(300,400), Point(400, 287), Point(312, 210),Point(180,250)]]
poly = Polygon(points, inters=inters)
ssk = StraightSkeleton(poly)
skes = ssk.skeleton()
#print skes
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
def plot_polygon(poly):
data = []
for pt in poly.points:
data.append([pt.x, pt.y])
oring = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(oring)
for r in poly.inters:
data = []
for pt in r:
data.append([pt.x, pt.y])
iring = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(iring)
plt.axes()
#poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
#plt.gca().add_patch(poly)
#plt.plot(data[:,0],-data[:,1])
plot_polygon(poly)
plt.axis('scaled')
plt.show()
In [7]:
import csv
fig_size = [50,50]
plt.rcParams["figure.figsize"] = fig_size
vertices = set()
edges = []
data = []
points = []
with open("data/hanshui.csv") as ifile:
reader = csv.DictReader(ifile)
for row in reader:
#print float(row["x"])*100, ",",float(row["y"])*100
data.append([float(row["x"]), float(row["y"])])
points.append(Point(row["x"], row["y"]))
data = np.asarray(data)
del points[len(points)-1]
polygon = Polygon(points)
print len(polygon.points) * 2 -3
plt.axes()
plot_polygon(polygon)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
for sk in skes:
vertices.add(sk[0])
vertices.add(sk[1])
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-r")
plt.axis('scaled')
plt.show()
In [8]:
import csv
fig_size = [50,50]
plt.rcParams["figure.figsize"] = fig_size
vertices = set()
edges = []
data = []
points = []
with open("data/poly.csv") as ifile:
reader = csv.DictReader(ifile)
for row in reader:
#print float(row["x"])*100, ",",float(row["y"])*100
data.append([float(row["x"]), float(row["y"])])
points.append(Point(row["x"], row["y"]))
data = np.asarray(data)
del points[len(points)-1]
polygon = Polygon(points)
print len(polygon.points) * 2 -3
plt.axes()
plot_polygon(polygon)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
for sk in skes:
vertices.add(sk[0])
vertices.add(sk[1])
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-r")
plt.axis('scaled')
plt.show()
In [9]:
fig_size = [10,10]
plt.rcParams["figure.figsize"] = fig_size
pts = [Point(30, 20), Point(30, 80), Point(50, 80), Point(50, 100), Point(65, 100), Point(65, 80), Point(100, 80), Point(100, 20)]
polygon = Polygon(pts)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
data = [pt.coords() for pt in pts]
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axis('scaled')
plt.show()
In [10]:
fig_size = [10,10]
plt.rcParams["figure.figsize"] = fig_size
pts = [Point(10, 55), Point(30, 55), Point(35, 75), Point(40, 55), Point(60, 55),
Point(45, 41), Point(60, 10), Point(35, 30), Point(10, 10), Point(25, 40)]
polygon = Polygon(pts)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
data = [pt.coords() for pt in pts]
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axis('scaled')
plt.show()
In [11]:
fig_size = [10,10]
plt.rcParams["figure.figsize"] = fig_size
pts = [Point(10, 15), Point(60, 15), Point(60, 35), Point(90, 35), Point(90, 75),
Point(10, 75)]
polygon = Polygon(pts)
ssk = StraightSkeleton(polygon)
skes = ssk.skeleton()
data = [pt.coords() for pt in pts]
plt.axes()
poly = plt.Polygon(data,fill=None,edgecolor="k",closed=True)
plt.gca().add_patch(poly)
for sk in skes:
plt.plot([sk[0].x, sk[1].x],[sk[0].y, sk[1].y],"-ro")
plt.axis('scaled')
plt.show()
In [ ]: