
上QQ阅读APP看书,第一时间看更新
1.3.1 计算点的坐标
在函数drawKochSF()中,首先计算为绘制图1.2所示基本片段图案所需的所有点的坐标。
def drawKochSF(x1, y1, x2, y2, t): d = math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) r = d/3.0 h = r*math.sqrt(3)/2.0 p3 = ((x1 + 2*x2)/3.0, (y1 + 2*y2)/3.0) p1 = ((2*x1 + x2)/3.0, (2*y1 + y2)/3.0) c = (0.5*(x1+x2), 0.5*(y1+y2)) n = ((y1-y2)/d, (x2-x1)/d) p2 = (c[0]+h*n[0], c[1]+h*n[1])
函数drawKochSF()被定义为将线段AB的端点的x和y坐标作为参数,该线段定义了图1.4所示雪花中的一个片段。该函数还将turtle对象t作为参数,该参数用于完成实际的绘图工作。接下来,这个函数将计算图1.2所示的所有参数,这些参数在1.1.2小节“构建科赫雪花”中讨论过。首先计算的是d——A到B的距离。将这个距离除以3得到r,这是构成片段的各条线段(总共4条)的长度。然后根据r计算h,这是片段中间的三角形的高。
接下来计算其他参数,它们都是元组,包含x坐标和y坐标。元组p3和p1定义了片段中间的三角形底边的两个端点,元组c表示p1和p3的中点,而n是与线段AB垂直的单位向量。通过结合使用c、h和n,计算出了p2——片段中间的三角形的顶点坐标。