资讯详情

用PYTHON画谢尔宾斯基三角形(代码可复制)

今天我们来画一个谢尔宾斯基三角形。

好吧,让我们先看原图:

这是一个等边三角形,平均分为两部分,然后连接三个焦点,形成四个等边三角形,中间一个不看,然后继续按照刚才的步骤,你可以画谢尔宾斯基三角形。所以我们必须计算如何找到中间点,所以我们必须写这样的代码:

import turtle as p p.pensize(3) p.speed(10) def get_midpoint(a,b):  ax,ay=a  bx,by=b  return(ax bx)/2,(ay by)/2 

现在我们知道知道中点的坐标位置时,我们可以将它们连接在一起形成三角形。

def draw_triangle(a,b,c):  ax,ay=a  bx,by=b  cx,cy=c  p.penup()  p.goto(ax,ay)  p.pendown()  p.goto(bx,by)  p.goto(cx,cy)  p.goto(ax,ay) 

以下是我们的主程序,只要三个坐标点确定,就可以运行。

def draw_sierpinski(triangle,depth):  """  :param trangle:指定三角形的三个顶点坐标:((ax,ay),(bx,by),(cx,cy))  :param depth:指定层数  """  a,b,c=triangle  draw_triangle(a,b,c)  if depth==0:   return  else:   d=get_midpoint(a,b)   e=get_midpoint(b,c)   f=get_midpoint(c,a)   draw_sierpinski([a,d,f],depth-1)   draw_sierpinski([d,b,e],depth-1)   draw_sierpinski([f,e,c],depth-1) triangle=[-200,-100],[0,200],[200,-100]] draw_sierpinski(triangle,3) p.done()

好吧,让我们整理一下的程序都是这样的:

import turtle as p p.pensize(3) p.speed(10) def get_midpoint(a,b):  ax,ay=a  bx,by=b  return(ax bx)/2,(ay by)/2 def draw_triangle(a,b,c):  ax,ay=a  bx,by=b  cx,cy=c  p.penup()  p.goto(ax,ay)  p.pendown()  p.goto(bx,by)  p.goto(cx,cy)  p.goto(ax,ay) def draw_sierpinski(triangle,depth):  """  :param trangle:指定三角形的三个顶点坐标:((ax,ay),(bx,by),(cx,cy))  :param depth:指定层数  """  a,b,c=triangle  draw_triangle(a,b,c)  if depth==0:   return  else:   d=get_midpoint(a,b)   e=get_midpoint(b,c)   f=get_midpoint(c,a)   draw_sierpinski([a,d,f],depth-1)   draw_sierpinski([d,b,e],depth-1)   draw_sierpinski([f,e,c],depth-1) triangle=[[-200,-100],[0,200],[200,-100] draw_sierpinski(triangle,3) p.done()

标签: 075k1l100只电阻器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台