显然,任何可以通过其他方式绘制的形状都可以由乌龟绘制。圆圈和正方形很容易
rt 1 fd .0
和
if ticks mod 100 = 0 [rt 90]
fd 1
超椭圆不是那么多。 (常规椭圆也不是微不足道的。) The Wikipedia article on super-ellipses如果您需要刷新该主题。
任何输入都表示赞赏。
使用日落龟是否可以制作出来自乌龟运动的超椭圆?
答案 0 :(得分:1)
我有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
答案 1 :(得分:0)
另一个答案的概括形式似乎产生了我想到的那种东西。笔越接近其中一个焦点,绘图越接近正方形。 n< 1超椭圆未实现。
globals[c]
breed [pens pen]
breed [foci focus]
foci-own [dist distx disty]
to setup
ca
create-pens 1 [set heading 45 fd 10 pendown set C self]
;create-foci 1 [setxy (random-xcor / 2) (random-ycor / 2)]
create-foci 1 [setxy 10 10]
create-foci 1 [setxy 10 -10]
create-foci 1 [setxy -10 -10]
create-foci 1 [setxy -10 10]
end
to go
repeat 5100
[
ask foci [
set dist distance c
set distx xcor - [xcor] of c
set disty ycor - [ycor] of c
]
ask c
[
set heading 90 + atan ( sum [distx / dist] of foci / sum [dist] of foci)
( sum [disty / dist] of foci / sum [dist] of foci)
FD .0125
]
]
end