您好,登錄后才能下訂單哦!
ghpython中koch曲線如何實現,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
首先以基礎多邊形為初始線,將其炸開,因為后邊要分別對每一根線進行分形操作。
經過ghpython一通操作猛如虎之后,就得到了按遞歸次數分組的分形線,最后將分形線進行join,并分別進行縮放和著色。
#雪花分形 import rhinoscriptsyntax as rs from Grasshopper import DataTree from Grasshopper.Kernel.Data import GH_Path import ghpythonlib.treehelpers as gt #函數1,定義一個對直線等分,移動等分點,連接成折線的函數 def fractal(line): #對直線三等分,得到四個點 pts=rs.DivideCurve(line,3,False,True) #將第三個點以第二個點為中心旋轉-60° pt_rotate=rs.RotateObject(pts[2],pts[1],-60,None,True) #將旋轉后的點插入到等分點列表中索引值為2的位置 pts.insert(2,pt_rotate) #根據點生成多段線,然后將多段線炸開 pl=rs.AddPolyline(pts) pl_ex=rs.ExplodeCurves(pl,True) #返回炸開后的多段線 return pl_ex num=0 #設定初始計數器 lst_data=DataTree[object]() #建立一個空的樹形數據列表 #函數2,調用函數1對直線分形,并將分形數據添加到樹形數據列表,注意路徑號的選擇 #這樣就可以將同一次調用函數2的所有分形線放置在了同一路徑下 def mul_fractal(lines): #全局變量,用來設置路徑號 global num num+=1 lst=[] #對調用函數的所有直線進行遍歷分形,并追加到列表中 for i in lines: lst.extend(fractal(i)) #將列表數據放置到樹形數據中 lst_data.AddRange(lst,GH_Path(num)) return lst #函數3,主函數,用來設置分形次數 def main(lines,count): #如果分形次數為0 ,則直接返回原直線 if count==0: return lines #如果分形次數為1,則作為遞歸出口,返回一次細分后的分形線 if count==1: return mul_fractal(lines) #如果分形次數大于1,則調用主函數自身,分形次數減1,直至分形次數為1,達到遞歸出口 #然后依次返回遞歸分形數據 else: return mul_fractal(main(lines,count-1)) #調用主函數,得到分形線,將初始線添加到分形線樹形數據的第一個分支 fractal_lines=main(lines,count) lst_data.AddRange(lines,GH_Path(0)) #根據樹形數據的分支數進行遍歷 #每一個分支的數據向上進行移動 for i in range(lst_data.BranchCount): rs.MoveObjects(lst_data.Branch(i),(0,0,i*height))
關于ghpython中koch曲線如何實現問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。