一つ一つのエッジに対して、往路 復路 の距離を変更します。下のコードは勾配を求めるところまでで、勾配の値をどのように距離に変換するかは未記述です。すごく勾配負荷を影響させるか、ほどほどにするか、各自の関数(formula)を考えてください。
この関数を作ってエッジの重みを変更した後、Dijkstraでその経路選択に影響が出ます。またminisum, betweennessの計算にも影響があるはずです。
import Rhino.Geometry as rg
import rhinoscriptsyntax as rs
import graph_1_0 as gph
g = gph.Graph(cvs)
for e in g.edges:
p1 = rg.Point3d(e.n1.pos)
p2 = rg.Point3d(e.n2.pos)
p1.Z = p2.Z = 0
d = rs.Distance(p1,p2)
h = e.n2.pos.Z - e.n1.pos.Z
print "slope", h / d
if h == 0:
e.len1 = e.len2 = e.len0
elif h > 0:#up climb
e.len1 = e.len0#needs your formula
else:#down hill
e.len2 = e.len0#needs your formula
Comments are closed.