用乌龟绘制一个紧急椭圆。

时间:2016-09-22 19:22:16

标签: netlogo computational-geometry ellipse

这是对我可能措辞不力的question关于超椭圆的评论中提出的问题的回答。

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

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

例如inscribes使得龟1在乌龟2周围画一个圆圈[360-gon]。我没有调用任何标准的圆形公式,但仍然得到一个圆圈。

是否有可能用同样的白话画一个椭圆,比如用一只乌龟画一个椭圆(或超椭圆)围绕另外两只乌龟用它们作为焦点?

1 个答案:

答案 0 :(得分: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 ;; 

 ]
]