如何在两个都以同一点为中心的八角形内绘制八角形?
How to draw octagon inside an octagon where both centered in same point?
如何使用 Python 在乌龟中以同一点为中心的八边形内绘制八边形?
这是我到目前为止所做的:
import turtle
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.pendown()
turtle.goto(20, -20)
turtle.penup()
for i in range(8):
turtle.forward(40)
turtle.right(360/8)
只需放下笔,在第一个 for 循环中追踪第一个五边形,行进第一条线的一半距离,然后从那里开始新的较小的八边形
import turtle
turtle.pendown()
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.forward(50)
for i in range(8):
turtle.forward(FIGURE OUT WHAT THE NEW DISTANCE IS)
turtle.right(360/8)
如果跳到点 20,-20 并从八边形 40 长度开始很重要,那么这就是版本
import turtle
turtle.pendown()
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.penup()
turtle.goto(20, -20)
turtle.pendown()
for i in range(8):
turtle.forward(40)
turtle.right(360/8)
记住 points on a circle 是由公式
给出的
x = r * cos(theta)
y = r * sin(theta)
其中 r
是半径,theta
是从原点延伸到点的射线与 x 轴所夹的角。八边形的顶点在圆上等距分布。因此,如果我们选择从 0 到 2 pi 弧度的等间距 theta
s,那么我们将得到一个八边形的顶点:
import turtle
from math import pi, cos, sin
def ngon(n, dist, phase, shift=(0,0)):
theta = 2 * pi / n
x0, y0 = shift
turtle.penup()
x = dist * cos(phase) + x0
y = dist * sin(phase) + y0
turtle.goto(x, y)
turtle.pendown()
for i in range(1, n+1):
x = dist * cos(i*theta + phase) + x0
y = dist * sin(i*theta + phase) + y0
turtle.goto(x, y)
def demo_ngon():
turtle.speed(0.1)
turtle.width(2.0)
ngon(8, dist=100, phase=0)
ngon(8, dist=68, phase=0)
turtle.mainloop()
demo_ngon()
import turtle
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.forward(50)
for i in range(8):
turtle.forward(40)
turtle.right(360/8)
如何使用 Python 在乌龟中以同一点为中心的八边形内绘制八边形? 这是我到目前为止所做的:
import turtle
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.pendown()
turtle.goto(20, -20)
turtle.penup()
for i in range(8):
turtle.forward(40)
turtle.right(360/8)
只需放下笔,在第一个 for 循环中追踪第一个五边形,行进第一条线的一半距离,然后从那里开始新的较小的八边形
import turtle
turtle.pendown()
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.forward(50)
for i in range(8):
turtle.forward(FIGURE OUT WHAT THE NEW DISTANCE IS)
turtle.right(360/8)
如果跳到点 20,-20 并从八边形 40 长度开始很重要,那么这就是版本
import turtle
turtle.pendown()
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.penup()
turtle.goto(20, -20)
turtle.pendown()
for i in range(8):
turtle.forward(40)
turtle.right(360/8)
记住 points on a circle 是由公式
给出的x = r * cos(theta)
y = r * sin(theta)
其中 r
是半径,theta
是从原点延伸到点的射线与 x 轴所夹的角。八边形的顶点在圆上等距分布。因此,如果我们选择从 0 到 2 pi 弧度的等间距 theta
s,那么我们将得到一个八边形的顶点:
import turtle
from math import pi, cos, sin
def ngon(n, dist, phase, shift=(0,0)):
theta = 2 * pi / n
x0, y0 = shift
turtle.penup()
x = dist * cos(phase) + x0
y = dist * sin(phase) + y0
turtle.goto(x, y)
turtle.pendown()
for i in range(1, n+1):
x = dist * cos(i*theta + phase) + x0
y = dist * sin(i*theta + phase) + y0
turtle.goto(x, y)
def demo_ngon():
turtle.speed(0.1)
turtle.width(2.0)
ngon(8, dist=100, phase=0)
ngon(8, dist=68, phase=0)
turtle.mainloop()
demo_ngon()
import turtle
for i in range(8):
turtle.forward(100)
turtle.right(360/8)
turtle.forward(50)
for i in range(8):
turtle.forward(40)
turtle.right(360/8)