Hi All
Which is the best algorithm to draw the polyline shortest passing through a set of points?
Below my code in Python
#-*- encoding: UTF-8 -*-
import rhinoscriptsyntax as rs
def ordinaPunti(points):
pi=points[0]
hh=len(points)
k=1
newlist=[pi] # lista dei punti ordinati per distanza minima
while True:
l=10000
np=len(points) #numero punti
k=k+1
if k>hh:break
pi=points[0]
for i in range (1,np):
p=points[i]
distance=rs.Distance(pi,p)
if distance<l:
l=distance
pv=p
newlist.append(pv) # appendo il punto piu vicino nella nuova lista
points.remove(pv) # e lo tolgo dalla lista di partenza
points=points[1:] #tolgo il primo punto dalla lista di partenza
points.insert(0,pv)# sostituisco il prmo punto della lista con quello più vicino
np=len(points)
print len(points)," ",len(newlist)
return newlist
if __name__=='__main__':
punti=rs.GetPoints("get Points")
pl=rs.AddPolyline(punti)
print "p1 = ",rs.CurveLength(pl)
newpoints=ordinaPunti(punti)
for p in newpoints:
rs.AddCircle(p,5)
rs.Sleep(100)
npl=rs.AddPolyline(newpoints)
print "pl2 = ",rs.CurveLength(npl)
Ciao Vittorio