breed[lines line] breed[circles circle] breed[foci focus] lines-own[a b]; linjer er på formen y=ax+b circles-own[r]; ; CIRKLER KAN HÅNDTERES GENNEM NEDENSTÅENDE FUNKTIONER OG PROCEDURER to circle.setup[#x0 #y0 #r]; centrum i (x0,y0) - radius r. Skal tegnes før eventuelle linjer... set r #r setxy #x0 #y0 set color blue show-circle #x0 #y0 #r setxy #x0 #y0 end to show-circle[#x #y #r] set size 2 set shape "x" stamp set pen-size 2 forward #r right 90 pendown let i 0 while [i < 360][ forward 6.2830 * r / 360 right 1 set i i + 1 ] penup hide-turtle end to-report distance-to-circle [#circle] report abs((distance #circle) - [r] of #circle) end ; LINJER KAN HÅNDTERES GENNEM NEDENSTÅENDE FUNKTIONER OG PROCECURER to line.setup [#a #b] set color blue set a #a set b #b setxy 0 b ; start i (0,b) set heading (90 - atan a 1); få den rigtige retning ud fra hældningen ' forward -200 ; her starter selve tegningen af linjen - bør nok lavet ud fra hældningen så vi starter i venstre side af verdenen pendown set pen-size 2 forward 400 penup setxy 0 b ; oprydning... hide-turtle end to-report distance-to-line [#line] let denom sqrt ( ( [a] of #line ) ^ 2 + 1) report abs (ycor - [b] of #line - [a] of #line * xcor)/ denom; end to-report line-heading [#line] report atan ( - [a] of #line) 1 end to point-to-line [#line] let #a [a] of #line let #b [b] of #line facexy (#a * (ycor - #b) + xcor) /(1 + #a ^ 2) (#a * (#a * ycor + xcor) + #b) /(1 + #a ^ 2) end ; BRÆNDPUNKTER KAN HÅNDTERES GENNEM NEDENSTÅENDE FUNKTIONER OG PROCECURER to focus.setup [x1 y1] setxy x1 y1 set size 3 set shape "circle" set color green end to midpoint [#t1 #t2] create-turtles 1[ setxy ([xcor] of #t1 + [xcor] of #t2) / 2 ([ycor] of #t1 + [ycor] of #t2) / 2 hide-turtle ] end