显然,任何可以通过其他方式绘制的形状都可以由海龟绘制。圆形和正方形很容易
rt 1 fd .0
and
if ticks mod 100 = 0 [rt 90]
fd 1
超级椭圆没那么多。 (规则的省略号也不是微不足道的。)维基百科关于超椭圆的文章 https://en.wikipedia.org/wiki/Superellipse如果您需要重新了解该主题。
任何意见都会受到赞赏。
使用下垂海龟有没有办法制作一个因海龟运动而出现的超级椭圆?
我有 1/4,我想你可以把另外三个拼凑起来。其他 n 值这里不再测试。 (使用 Wiki 符号,加上 phi 作为整个物体旋转的角度。) 我知道,落笔的重置刻度的放置很草率。
to go2
clear-all
reset-ticks
let a 6
let b 5
let phi 0
let n 3.5
create-turtles 1 [
let iNdx 1
repeat 90 [
show iNdx
show cos(iNdx)
if cos(iNdx) > 0 and sin(iNdx) > 0 [
let tx (a * (cos(iNdx) ^ (2 / n)))
let ty (b * (sin(iNdx) ^ (2 / n)))
let tx2 tx * cos(phi) - ty * sin(phi)
let ty2 tx * sin(phi) + ty * cos(phi)
setxy tx2 ty2
]
pen-down
set iNdx iNdx + 1
]
]
end
椭圆看起来更简单,但你来判断
to go
clear-all
reset-ticks
let a 6
let b 5
let phi 45
create-turtles 1 [
let iNdx 1
repeat 360 [
let tx (a * cos(iNdx))
let ty (b * sin(iNdx))
let tx2 tx * cos(phi) - ty * sin(phi)
let ty2 tx * sin(phi) + ty * cos(phi)
setxy tx2 ty2
pen-down
set iNdx iNdx + 1
]
]
end
作为一个程序的概括和简化。
to Super-ellipse [x y a b m n]
create-turtles 1 [
let iNdx 1
repeat 360 [
setxy (x + (abs cos iNdx)^(2 / m) * a * (sgn cos iNdx))
(y + (abs sin iNdx)^(2 / n) * b * (sgn sin iNdx))
pendown
set iNdx iNdx + 1]
]
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)