伸展的菱形-序列指令练习
修改自:John Golden — 2014年10月9日 - 下午11:50 的 Star Fractal by Justin Lanier – GeoGebra
https://ichoosemath.files.wordpress.com/2014/10/star-fractal-write-up.pdf
n=滑动条(5,50,1)
赋值(n,10)
m=滑动条(0,15,1)
赋值(m,0)
k=滑动条(0,15,1)
赋值(k,0)
A=(0, 0)
B=(1, 0)
a=线段(A,B)
#旋转(B,360*((°)/(n)),A)和点B为n角星邻近两角尖,B'为凹进去的角点
B'=旋转(B,-90°,((旋转(B,360*((°)/(n)),A)+B)/(2)))
B''=对称(B',直线(A,B))
#得出风筝形靠近中心的另一个角
C=交点(旋转(直线(B,B'),90°,B'),旋转(直线(B,B''),90°,B''))
#基本形状:poly1风筝形,poly2正方形
poly1=多边形(B,B',C,B'')
poly2=多边形(C,B',4)
#风筝形绕点A旋转得到n个,可以简洁为:序列(旋转(poly1,i*360*((°)/(n)),A),i,0,n-1)
list1=序列(多边形(旋转(B,i*360*((°)/(n)),A),旋转(B',i*360*((°)/(n)),A),旋转(C,i*360*((°)/(n)),A),旋转(B'',i*360*((°)/(n)),A)),i,0,n-1)
#正方形绕点A旋转得到n个
list2=序列(旋转(poly2,i*360*((°)/(n)),A),i,0,n-1)
#星尖角角度
α=角度(B',B,B'')
#缩放比例,风筝形短边/长边,值为tan(α/2),也为
ratio=((距离(B',C))/(距离(B',B)))
#将基本图形缩放,往外扩增
list3=序列(位似(list1,ratio^(i),A),i,1,k)
list4=序列(位似(list2,ratio^(i),A),i,1,k)
#将基本图形缩放,往外缩小
list5=序列(位似(list2,ratio^(-i),A),i,1,m)
list6=序列(位似(list1,ratio^(-i),A),i,1,m)
h=true
j=true
#h控制风筝形,j控制正方形
设置显示条件(list1,h)
设置显示条件(list3,h)
设置显示条件(list6,h)
设置显示条件(list2,j)
设置显示条件(list4,j)
设置显示条件(list5,j)
制作自定义工具
KitesSquares(Centre,Radius,Number)
xx
美妙的图形只需要五个序列就可以完成:
L_1:序列(向量((1; 2π / n i)), i, 0, m - 1)
L_2:添加(A, 序列(A + 总和(L_1, i), i, 1, m))
L_3:旋转(L_2, 2π / n)
L_4:序列(多边形(L_2(i + 1), L_2(i + 2), L_3(i + 1), L_3(i)), i, 1, m - 1)
L_5:序列(旋转(L_4, 2π / n i), i, 1, n)
另外再设置两个点A、B及两个参数值m、n。
#由于分成n份时,n角星凸角1(风筝形外角),凹角2=90,风筝形内角3
外角1=90°-360°/n
内角3=180°-角1=90°+360°/n
#缩放比例,风筝形短边/长边,值为tan(角1/2)
风筝形长边=R*sin(360°/2n)*tan(45°)
长/短=(1/sin(外角1/2))/(1/sin(内角3/2))=sin(内角3/2)/sin(外角1/2)
风筝形短边=R*sin(360°/2n)*tan(45°)*sin(外角1/2)/sin(内角3/2)即为
风筝形短边=R*sin(360°/2n)*tan(45°)*sin((90°-360°/n)/2)/sin((90°+360°/n)/2)