ghpython中koch曲線如何實現(xiàn)

ghpython中koch曲線如何實現(xiàn),針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)是一家以網(wǎng)絡技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護、成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站備案、服務器租用、域名申請、軟件開發(fā)、微信小程序定制開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務,是一家有著豐富的互聯(lián)網(wǎng)運營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務窗口:建站電話聯(lián)系:18980820575

首先以基礎(chǔ)多邊形為初始線,將其炸開,因為后邊要分別對每一根線進行分形操作。

經(jīng)過ghpython一通操作猛如虎之后,就得到了按遞歸次數(shù)分組的分形線,最后將分形線進行join,并分別進行縮放和著色。

#雪花分形
import rhinoscriptsyntax as rs
from Grasshopper import DataTree
from Grasshopper.Kernel.Data import GH_Path
import ghpythonlib.treehelpers as gt

#函數(shù)1,定義一個對直線等分,移動等分點,連接成折線的函數(shù)
def fractal(line):
    #對直線三等分,得到四個點
    pts=rs.DivideCurve(line,3,False,True)
    #將第三個點以第二個點為中心旋轉(zhuǎn)-60°
    pt_rotate=rs.RotateObject(pts[2],pts[1],-60,None,True)
    #將旋轉(zhuǎn)后的點插入到等分點列表中索引值為2的位置
    pts.insert(2,pt_rotate)
    #根據(jù)點生成多段線,然后將多段線炸開
    pl=rs.AddPolyline(pts)
    pl_ex=rs.ExplodeCurves(pl,True)
    #返回炸開后的多段線
    return pl_ex


num=0   #設(shè)定初始計數(shù)器
lst_data=DataTree[object]()   #建立一個空的樹形數(shù)據(jù)列表
#函數(shù)2,調(diào)用函數(shù)1對直線分形,并將分形數(shù)據(jù)添加到樹形數(shù)據(jù)列表,注意路徑號的選擇
#這樣就可以將同一次調(diào)用函數(shù)2的所有分形線放置在了同一路徑下
def mul_fractal(lines):
    #全局變量,用來設(shè)置路徑號
    global num
    num+=1
    lst=[]
    #對調(diào)用函數(shù)的所有直線進行遍歷分形,并追加到列表中
    for i in lines:
        lst.extend(fractal(i))
    #將列表數(shù)據(jù)放置到樹形數(shù)據(jù)中
    lst_data.AddRange(lst,GH_Path(num))
    return lst

#函數(shù)3,主函數(shù),用來設(shè)置分形次數(shù)
def main(lines,count):
    #如果分形次數(shù)為0 ,則直接返回原直線
    if count==0:
        return lines
    #如果分形次數(shù)為1,則作為遞歸出口,返回一次細分后的分形線
    if count==1:
        return mul_fractal(lines)
    #如果分形次數(shù)大于1,則調(diào)用主函數(shù)自身,分形次數(shù)減1,直至分形次數(shù)為1,達到遞歸出口
    #然后依次返回遞歸分形數(shù)據(jù)
    else:
        return mul_fractal(main(lines,count-1))

#調(diào)用主函數(shù),得到分形線,將初始線添加到分形線樹形數(shù)據(jù)的第一個分支
fractal_lines=main(lines,count)
lst_data.AddRange(lines,GH_Path(0))

#根據(jù)樹形數(shù)據(jù)的分支數(shù)進行遍歷
#每一個分支的數(shù)據(jù)向上進行移動
for i in range(lst_data.BranchCount):
    rs.MoveObjects(lst_data.Branch(i),(0,0,i*height))

關(guān)于ghpython中koch曲線如何實現(xiàn)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

網(wǎng)站欄目:ghpython中koch曲線如何實現(xiàn)
本文URL:http://muchs.cn/article48/jpephp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、動態(tài)網(wǎng)站建站公司、App設(shè)計標簽優(yōu)化、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)