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()


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-17419e2c643c> in <module>()
     17 for l in lines:
     18     pid, x, y = l.strip().split(",")
---> 19     data.append([float(x), float(y)])
     20     points.append(Point(x,y))
     21 

ValueError: could not convert string to float: "656.697435897"

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()


reflex
reflex
15

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()


5

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()


reflex
13

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()


reflex
reflex
15

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()


215
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
214

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()


105
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
reflex
103

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()


13

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()


reflex
14

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()


9

In [ ]: