用LOGO編程語言實現(xiàn)曲線縫合
女士們,先生們,老少爺們兒們!在下張大少。
曲線縫合是數(shù)學(xué)教學(xué)大綱的一個組成部分,許多教師在不同的層次上使用,無論是作為簡單的繪畫練習(xí)還是作為圖案概括的重要工具。計算機的使用增強了這一課題的吸引力和適用性,事實證明LOGO是一種強大的、非常靈活的編程語言,很適合用于圖形。
許多曲線縫合圖案來自于一個基本圖案,該圖案由兩條等長的線相交形成一個角度。在這兩條線上以一定的間隔標(biāo)出一些點。然后將一條線上的點與另一條線上的點以一定的方式連接起來,形成拋物線的包絡(luò)線。
該過程在圖1(a)中得到了說明。這顯示了一個一般的角度8,縫合工作將沿著這個角度進(jìn)行。我們假設(shè)該角度的兩個分支長度相等I,并且它們被細(xì)分為n個長度為h=l/n的增量。圖1(a)顯示了一個典型的長度為x的縫合線,與原始方向形成一個角度。
l1,l2和θ是輸入?yún)?shù),而α和x則需要導(dǎo)出。
我們選擇用反余弦函數(shù)來定義a,因為這個函數(shù)的范圍是[0°~-180°],而反正弦函數(shù)的范圍是[-90°~+ 90° ]。
隨著漸進(jìn)式縫合的進(jìn)行,l1增加了h,而l2減少了同樣的數(shù)量。
這些結(jié)果可以很容易地被納入一個程序,該程序?qū)⑦M(jìn)行縫合。該程序需要三個輸入?yún)?shù)。1,兩個分支的長度,n,要畫的針數(shù),θ,縫合的角度。該程序首先繪制角度的兩個分支,然后調(diào)用一個子程序來處理縫合工作。
這個相對簡單的程序代表了一個基本的構(gòu)建模塊,在這個模塊上可以構(gòu)建很多曲線拼接大廈。在第一種情況下,它可以用來沿著任何角度進(jìn)行縫合,無論是銳角還是鈍角(圖2)。
現(xiàn)在,讓我們來探索使用這一程序的許多方法。我們首先考慮許多這樣的角聚集在一點形成一個蜘蛛網(wǎng)的情況。這可以通過下面的程序非常簡單地完成。
使用“網(wǎng)絡(luò)”的例子如圖3所示。
我們將考慮的下一組圖案是基于將兩個縫合的角度結(jié)合在一起形成一個菱形(圖4)。
可以將菱形圍繞一個點組合在一起,從而得到以下圖案。
菱形也可以以一種略微不同的方式組合在一起,即“Flowerl”產(chǎn)生了圖6中所示的圖案,這些圖案與花產(chǎn)生的圖案密切相關(guān)(圖5)。
另一套非常吸引人的圖案可以通過將正多邊形的每個頂點上的兩個相同的縫合角放在一起來獲得。
“三葉草”可以成功地與“網(wǎng)”結(jié)合,產(chǎn)生更多令人愉悅的圖案。這些例子如下所示(圖8)。
我們在這里展示了“縫合”程序的一些應(yīng)用。顯然還可以找到更多。事實上,該程序的簡單性使得門外漢自己動手制作自己的曲線縫合圖案成為可能。
為了進(jìn)一步簡化調(diào)用序列,可以去掉變量I和n。這意味著這兩個量保持固定,而角度θ保持為唯一的變量。
盡管它有很大的靈活性,“縫合”在圓形圖案上用處不大,這是我們希望從現(xiàn)在開始集中討論的話題。
這些圓形圖案是由圓周上m個等距點連接而成的。我們將這些點標(biāo)為1,2,3,...這些點根據(jù)特定的規(guī)則連接在一起。
例如,我們可以考慮通過將點1連接到點l+1、點2連接到點l+2直到要連接到i+m三l mod(M)的點m而創(chuàng)建的圖案。這組圖案構(gòu)成了圓形的包絡(luò)線。
另一種可能是考慮通過將點1連接到點n、點2連接到點2n,以此類推直到點m連接到點nm而創(chuàng)建的圖案。這組構(gòu)成了外擺線的包絡(luò),如心(n=2)和腎線(n=3)。
下圖說明了問題的幾何結(jié)構(gòu)。一個特定的針腳將Pi(r sin a,r cos a)與Qi(r sinb,r cos b)連接起來
并且我們已經(jīng)結(jié)合了上面提到的兩種情況。
為了建立一個能夠處理這種情況的程序,我們需要能夠畫一條線來連接給定坐標(biāo)的兩點。這是通過在(X1,Y1)和(x2,Y2)之間畫一條線的過程“l(fā)nne”成功完成的。
“l(fā)nne”是一個非常有用的例程,可以用于許多目的。一旦它被加載,一個單獨的程序就足以處理我們上面提到的兩種情況。除了我們已經(jīng)介紹的三個變量m、I和n之外,將圓的半徑r保持為一個變量也是有用的。
為了畫出圓的包絡(luò),我們簡單地固定n = 1,并使用一個合適的l值——較大的l值產(chǎn)生大的內(nèi)圓,而較大的l值(l < m/2)產(chǎn)生較小的內(nèi)圓。
對于外擺線,我們簡單地固定l=0,并選擇不同的n值:對于心形,n = 2;對于腎形,n = 3;對于Cremona的外擺線,n = 4,等等。我們注意到在每種情況下,曲線都有n - 1個尖點。
可以研究其他可能性,例如上述兩種效果的組合。結(jié)果是形成外擺線,這些外擺線相對于l = 0時獲得的外擺線旋轉(zhuǎn)了。
另一個有趣的可能性是研究橢圓上的點而不是圓上的點的相同問題。一些結(jié)果如下圖所示。
有人觀察到,圓所遇到的大多數(shù)性質(zhì)都在橢圓中重現(xiàn)了。當(dāng)考慮與圓相比略有扭曲的偏心外擺線時,就會發(fā)生輕微的差別。
另一種圓形圖案是所謂的神秘玫瑰圖案,其中m個等距點彼此相連。因此,點1將連接到其他m- 1個點。已經(jīng)連接到1的點2將需要連接到其他m-2個點,以此類推,直到點(m - 1)仍然需要連接到點m。
這種情況很容易編程。
m = 7和m = 14的結(jié)果如下所示。
除了圖紙外,該程序還可以很容易地擴展到計算和打印出每個圖案繪制的線條數(shù)。這將成為研究神秘玫瑰中線條數(shù)和頂點數(shù)之間關(guān)系的有用工具。
再說一次,我們不會把自己限制在圈子里的模式。對于位于等角螺線上的點,可以獲得非常漂亮的殼狀圖案。其中一種模式如圖14所示。
我們在這篇文章中展示了如何將曲線拼接成功地移植到計算機上。LOGO 語言的簡單性和靈活性使這一操作非常流暢,在發(fā)現(xiàn)新模式、新屬性和新概括方面尤其富有成效。
青山不改,綠水長流,在下告退。