2016-09-22 46 views
1

这是对我在可能措辞不佳的question关于超椭圆的评论中提出的问题的回答。用乌龟绘制一个紧急椭圆。

在Netlogo中,以其他语言看起来很奇怪的方式绘制几何形状是很自然的。

ask turtle 1 [pendown 
       let d (pi * distance turtle 2)/360 
       repeat 360 [face turtle 2 rt 90 fd d] 
      ] 

例如题让龟1画了一个圈[360坤]龟左右2.我没有调用任何标准的圆式,但仍得到一个圆。

是否有可能在这个相同的白话中绘制一个椭圆,并说一个乌龟画一个椭圆(或超椭圆)围绕另外两个乌龟使用它们作为焦点?

回答

2

基本上要制作一个椭圆形,您需要设置朝向焦点加权平均标题的龟,并更新每个步骤。它可以在一行中完成,但那将是一条不合格的路线。

globals [a b c] 
    to setup 
     ca 
     crt 1 [set heading 90 fd 10 pendown set C self] 
     crt 1 [setxy 5 10 set A self] 
     crt 1 [setxy 0 -10 set B self] 
    end 

to go 

repeat 5100 ;; ad hoc number 
[ 
ask c 
[ 
let Ax [xcor] of A - xcor 
let Ay [ycor] of A - ycor 
let Bx [xcor] of B - xcor 
let By [ycor] of B - ycor 
let da 1/distance a 
let db 1/distance B 

set heading 90 + atan ((ax * da + bx * dB)/(da + db)) 
         ((ay * da + by * db)/(da + db)) 
FD .0125 ;; 

] 
]