to init cs setlabelfont [[Times New Roman] -12 0 0 400 0 0 0 0 3 2 1 18] setParams osi oznake puscice ht windowcreate "main "w1 [Izobraževalno okolje] 0 0 :w1w :w1h [setup] end to zgled1 izracunajVrtez 5 5 0 0 148 izracunajVrtez 5 5 1 1 148 izracunajVrtez 5 5 2 2 148 izracunajVrtez 5 5 3 3 148 izracunajVrtez 5 5 4 4 148 izracunajVrtez 5 5 4.5 4.5 148 izracunajVrtez 5 5 4.75 4.75 148 narisiTocko 5 5 [T] narisiTocko 0 0 [R] narisiTocko 1 1 [R] narisiTocko 2 2 [R] narisiTocko 3 3 [R] narisiTocko 4 4 [R] narisiTocko 4.5 4.5 [R] narisiTocko 4.75 4.75 [R] end to izracunajVrtez :xt :yt :xr :yr :alpha ; tocko T(xt,yt) rotiramo okoli tocke R(xr,yr) make "x2 (:xt * cos :alpha) - (:yt * sin :alpha) + :xr - (:xr*cos :alpha) + (:yr * sin :alpha) make "y2 (:xt * sin :alpha) + (:yt * cos :alpha) + :yr - (:yr*cos :alpha) - (:xr * sin :alpha) narisiTocko :x2 :y2 [T'] ;show :x2 ;show :y2 (print [Vrtež točke T ] :xt :yt [okoli točke R ] :xr :yr [za kot] :alpha [stopinj]) make "x2k form :x2 0 3 make "y2k form :y2 0 3 (print [T' = ] :x2k :y2k) (print [______________]) end to krog :x :y :polmer pu setpos (list :x*:enota :y*:enota) pd circle :polmer*:enota pu home pd end to myend windowdelete "w1 end to narisiTocko :x :y :ime setlabelfont [[Times New Roman] -18 0 0 400 0 0 0 0 3 2 1 18] pu setpos (list :x*:enota :y*:enota) pd rt 90 label :ime circle 3 ;fill pu home pd setlabelfont [[Times New Roman] -12 0 0 400 0 0 0 0 3 2 1 18] end to Osi setpencolor (list 0 0 0) pu home rt 90 label 0 home pd fd 360 home bk 360 home rt 90 fd 400 home rt 90 bk 400 home end to Oznake setpencolor (list 0 0 0) make "x -9 make "y 0 do.until [setpos(list :x*:enota 0) rt 90 label :x lt 90 make "x :x + 1] [:x > 9] make "x -9 do.until [pu setpos(list :x*:enota -5) pd setpos(list :x*:enota 5) make "x :x+1][:x > 9] Puscice make "y -8 make "x 0 do.until [pu setpos(list 0 :y*:enota) pd rt 90 label :y lt 90 make "y :y + 1] [:y > 8] make "y -8 do.until [pu setpos(list -5 :y*:enota) pd setpos(list 5 :y*:enota) make "y :y+1][:y > 8] pu end to Oznake2 setpencolor (list 0 0 0) make "x -9 make "y 0 do.until [setpos(list :x*:enota 0) make "x :x + 1] [:x > 9] make "x -9 do.until [pu setpos(list :x*:enota -5) pd setpos(list :x*:enota 5) make "x :x+1][:x > 9] Puscice make "y -8 make "x 0 do.until [pu setpos(list 0 :y*:enota) pd make "y :y + 1] [:y > 8] make "y -8 do.until [pu setpos(list -5 :y*:enota) pd setpos(list 5 :y*:enota) make "y :y+1][:y > 8] pu end to Puscice setpencolor (list 0 0 0) pu home setpos (list :enota*-10 0) pd rt 45 fd 10 pu home setpos (list :enota*-10 0) pd rt 135 fd 10 pu home setpos (list :enota*10 0) pd lt 45 fd 10 pu home setpos (list :enota*10 0) pd lt 135 fd 10 pu home setpos (list 0 :enota*-9) pd rt 45 fd 10 pu home setpos (list 0 :enota*-9) pd lt 45 fd 10 pu home setpos (list 0 :enota*9) pd rt 135 fd 10 pu home setpos (list 0 :enota*9) pd lt 135 fd 10 pu home end to rotacija make "tkx first comboboxgettext "tx ; preberemo koordinato x točke T make "tky first comboboxgettext "ty ; preberemo koordinato y točke T narisiTocko :tkx :tky [T] make "rkx first comboboxgettext "rx ; preberemo koordinato x točke R make "rky first comboboxgettext "ry ; preberemo koordinato y točke R narisiTocko :rkx :rky [R] ; narišemo T(rkx,rky) make "p (:rkx-:tkx)*(:rkx-:tkx) + (:rky-:tky)*(:rky-:tky) ;krog :rkx :rky sqrt :p make "kotRotacije first comboboxgettext "kot izracunajVrtez :tkx :tky :rkx :rky :kotRotacije end to setParams make "w1w 150 make "w1h 90 make "w2w 150 make "w2h 120 make "enota 40 make "W3W 137 ;*** make "w3h 210 make "rdecaBarva 255 make "zelenaBarva 255 make "modraBarva 255 end to setup staticcreate "w1 "st2 [Ta program prikazuje naslednji preslikavi:\ - vrtež okoli točke\ - zrcaljenje čez premico \ \ Izberi eno od opcij:] 2 2 :w1w-2 100 buttoncreate "w1 "b3 "KONEC 100 55 45 15 [myend] buttoncreate "w1 "b1 "začni 2 55 45 15 [zacetek] buttoncreate "w1 "b2 "navodila 50 55 45 15 [navodila] end to zacetek windowcreate "main "w6 [Vrteži in zrcaljenje] 10 10 120 120 [] buttoncreate "w6 "b21 [BARVE RISANJA] 10 50 100 15 [izberiBarve] buttoncreate "w6 "b24 "ZBRIŠI 10 70 100 15 [zbrisi] buttoncreate "w6 "b25 "ZAPRI 65 90 50 12 [windowdelete "w6] buttoncreate "w6 "b22 "VRTEŽI 10 2 100 15 [vrtezi] buttoncreate "w6 "b23 "ZRCALJENJE 10 22 100 15 [zrcaljenje] end to navodila windowcreate "main "w7 [Navodila za uporabo] 10 10 150 180 [] staticcreate "w7 "st71 [Ta pripomoček je namenjen tistim, ki bi radi ugotovili kam se preslika točka, če jo zrcalimo čez poljubno premico \ ali jo zavrtimo okoli poljubne točke. Točke in njihove slike se prikažejo tudi v grafičnem oknu.] 2 2 140 60 staticcreate "w7 "st73 [Pripomoček bo bolj učinkovit, če \pripravimo določene naloge (naprimer sestavljanje preslikav ipd.) ali učenca vodimo skozi proces odkrivanja.] 2 58 140 40 staticcreate "w7 "st74 [Avtorica: Jelka Košir, julij 2003 \nmentor prof.Vladimir Batagelj \npredmet Didaktika računalništva, PeF Lj] 2 140 140 30 buttoncreate "w7 "b72 "ZAPRI 50 100 45 15 [windowdelete "w7] end to vrtezi windowcreate "main "w2 [Vrteži] 10 130 :w2w :w2h [] staticcreate "w2 "st3 [Vnesi potrebne parametre] 2 2 :w2w-2 15 staticcreate "w2 "st4 [Zavrti točko T] 2 20 50 10 staticcreate "w2 "st5 [koordinata x] 2 30 40 10 comboboxcreate "w2 "tx 45 28 20 9 comboboxaddstring "tx [0] staticcreate "w2 "st6 [koordinata y] 2 40 40 10 comboboxcreate "w2 "ty 45 38 20 9 comboboxaddstring "ty [0] staticcreate "w2 "st7 [okoli točke R] 72 20 50 10 staticcreate "w2 "st8 [koordinata x] 72 30 40 10 comboboxcreate "w2 "rx 115 28 20 9 comboboxaddstring "rx [0] staticcreate "w2 "st9 [koordinata y] 72 40 40 10 comboboxcreate "w2 "ry 115 38 20 9 comboboxaddstring "ry [0] staticcreate "w2 "st10 [za kot] 2 60 20 10 comboboxcreate "w2 "kot 25 58 20 9 comboboxaddstring "kot [90] staticcreate "w2 "st11 [stopinj] 48 60 25 10 buttoncreate "w2 "b5 "NARIŠI 70 90 30 12 [rotacija] buttoncreate "w2 "b4 "ZAPRI 110 90 30 12 [windowdelete "w2] buttoncreate "w2 "b12 [BARVE RISANJA] 5 90 55 12 [izberiBarve] end to zrcaljenje windowcreate "main "w3 [Zrcaljenje] 10 130 :w3w :w3h [] staticcreate "w3 "zst3 [Vnesi potrebne parametre] 2 2 :w3w-2 15 staticcreate "w3 "zst4 [Zrcali točko T] 2 20 50 10 staticcreate "w3 "zst5 [koordinata x] 2 30 40 10 comboboxcreate "w3 "txx 45 28 20 9 comboboxaddstring "txx [0] staticcreate "w3 "zst6 [koordinata y] 2 40 40 10 comboboxcreate "w3 "tyy 45 38 20 9 comboboxaddstring "tyy [0] ; groupboxcreate "w3 "mygroupbox 0 55 130 60 radiobuttoncreate "w3 "mygroupbox "skoziTocki [čez premico skozi točki R1 in R2] 2 60 127 9 radiobuttoncreate "w3 "mygroupbox "naPremici [čez premico y = kx + n] 2 120 127 9 ;buttoncreate "w3 "mybutton "GO 40 50 25 25 [] radiobuttonset "skoziTocki "true radiobuttonset "naPremici "false ;staticcreate "w3 "zst7 [y = kx + n] 52 120 :w3w-2 10 staticcreate "w3 "zst8 [koordinata x1] 2 70 50 10 comboboxcreate "w3 "rx1 50 68 20 9 comboboxaddstring "rx1 [0] staticcreate "w3 "zst9 [koordinata y1] 2 80 50 10 comboboxcreate "w3 "ry1 50 78 20 9 comboboxaddstring "ry1 [0] staticcreate "w3 "zst10 [koordinata x2] 2 90 50 10 comboboxcreate "w3 "rx2 50 88 20 9 comboboxaddstring "rx2 [1] staticcreate "w3 "zst11 [koordinata y2] 2 100 50 10 comboboxcreate "w3 "ry2 50 98 20 9 comboboxaddstring "ry2 [0] ; groupboxcreate "w3 "mygroupbox2 0 115 130 60 staticcreate "w3 "zk1 [k ] 42 135 10 10 comboboxcreate "w3 "k 50 133 20 9 comboboxaddstring "k [0] staticcreate "w3 "zn1 [n ] 42 145 10 10 comboboxcreate "w3 "n 50 143 20 9 comboboxaddstring "n [0] buttoncreate "w3 "b8 [BARVE RISANJA] 2 180 55 12 [izberiBarve] buttoncreate "w3 "b6 "NARIŠI 65 180 28 12 [zrcaliTocko] buttoncreate "w3 "b7 "ZAPRI 100 180 28 12 [windowdelete "w3] end to zrcaliTocko make "xt first comboboxgettext "txx make "yt first comboboxgettext "tyy narisiTocko :xt :yt [T] make "xr1 first comboboxgettext "rx1 make "yr1 first comboboxgettext "ry1 make "xr2 first comboboxgettext "rx2 make "yr2 first comboboxgettext "ry2 make "k1 first comboboxgettext "k make "n1 first comboboxgettext "n ifelse radiobuttonget "skoziTocki [dveTocki :xt :yt :xr1 :yr1 :xr2 :yr2] [kxn :xt :yt :k1 :n1] end to kxn :xt :yt :k :n (print [Zrcali točko ] :xt :yt [čez premico y =] :k [x +] :n) ;poisci tocko na premici make "x1 0 make "y1 :n make "a1 :xt-:x1 ; prva komponenta smernega vektorja točke T, ki jo želimo zrcaliti make "a2 :yt-:y1 make "p1 1 make "p2 :k make "pDolzinaKvadrat :p1*:p1 + :p2*:p2 make "apSkalar :a1*:p1 + :a2*:p2 make "b1 -:a1 + 2 *:p1 * (:apSkalar / :pDolzinaKvadrat) make "b2 -:a2 + 2 *:p2 * (:apSkalar / :pDolzinaKvadrat) make "c1 :b1+:x1 make "c2 :b2+:y1 narisiTocko :c1 :c2 [T'] make "d1 form :c1 0 3 make "d2 form :c2 0 3 (print [T' = ] :d1 :d2) (print [______________]) narisiPremicoknx :k :n end to narisiPremicoknx :k :n make "x -9 make "y (:x*:k + :n) pu setpos (list :x*:enota :enota*:y) pd do.while [make "x :x+0.1 izracunajY :x :k :n ifelse (AND (:y<9) (:y>-9)) [pd setpos (list :x*:enota :y*:enota)][pu setpos (list :x*:enota :y*:enota)]] [:x<9] pu home end to izracunajY :x :k :n make "y (:x*:k + :n) end to dveTocki :xt :yt :xr1 :yr1 :xr2 :yr2 (print [Zrcali točko ] :xt :yt [čez premico skozi točki R1] :xr1 :yr1 [in R2] :xr2 :yr2) ;premakni premico v izhodišče IFELSE (AND (:xr1 = :xr2) (:yr1 = :yr2)) [(print [NAPAKA! \ Točki sta enaki, zato ne določata premice!] ) (print [______________])] [nadaljuj :xt :yt :xr1 :yr1 :xr2 :yr2] end to nadaljuj :xt :yt :xr1 :yr1 :xr2 :yr2 narisiTocko :xr1 :yr1 [R1] narisiTocko :xr2 :yr2 [R2] make "a1 :xt-:xr1 ; prva komponenta smernega vektorja točke T, ki jo želimo zrcaliti make "a2 :yt-:yr1 make "p1 :xr2-:xr1 ; prva komponenta smernega vektorja p premice p make "p2 :yr2-:yr1 make "pDolzinaKvadrat :p1*:p1 + :p2*:p2 ;make "dolzinaP sqrt :temp make "apSkalar :a1*:p1 + :a2*:p2 make "b1 -:a1 + 2 *:p1 * (:apSkalar / :pDolzinaKvadrat) make "b2 -:a2 + 2 *:p2 * (:apSkalar / :pDolzinaKvadrat) make "c1 :b1+:xr1 make "c2 :b2+:yr1 narisiTocko :c1 :c2 [T'] make "d1 form :c1 0 3 make "d2 form :c2 0 3 (print [T' = ] :d1 :d2) (print [______________]) make "a (:yr2 - :yr1) make "c (:yr1 * :xr2 - :yr1 *:xr1 - :xr1*:yr2 +:xr1 * :yr1) make "b (:xr1-:xr2) ifelse (:xr1 = :xr2) [narisiNavpicnoPremico :a :c][narisiPremicoknx (-:a/:b) (-1 * :c)] end to narisiNavpicnoPremico :a :c make "y -9 make "x (- (:c/:a)) pu setpos (list :x*:enota :enota*:y) pd setpos (list :x*:enota :enota*9)pu home end to izberiBarve windowcreate "main "w4 [Izbira barv risanja] 130 10 100 110 [] staticcreate "w4 "st01 [Rdeča] 10 7 20 20 SCROLLBARCREATE "w4 "rdeca 10 27 5 40 [myred] scrollbarset "rdeca 0 255 :rdecaBarva staticcreate "w4 "st02 [Zelena] 40 7 23 20 SCROLLBARCREATE "w4 "zelena 40 27 5 40 [mygreen] scrollbarset "zelena 0 255 :zelenaBarva staticcreate "w4 "st03 " 70 7 20 20 SCROLLBARCREATE "w4 "modra 70 27 5 40 [myblue] scrollbarset "modra 0 255 :modraBarva buttoncreate "w4 "b10 [SHRANI BARVE] 2 80 60 12 [nastaviBarve] buttoncreate "w4 "b9 "ZAPRI 65 80 28 12 [windowdelete "w4] ;buttoncreate "w4 "b14 "ZBRIŠI 65 80 28 12 [windowdelete "w4] end to nastaviBarve make "rdecaBarva SCROLLBARGET "rdeca make "zelenaBarva SCROLLBARGET "zelena make "modraBarva SCROLLBARGET "modra setpencolor (list :rdecaBarva :zelenaBarva :modraBarva) ;windowdelete "w4 (print [Barve so nastavljene: rdeča] :rdecaBarva [zelena] :zelenaBarva [modra] :modraBarva) (print [______________]) end to myred staticupdate "st01 sentence [Rdeča] scrollbarget "rdeca end to mygreen staticupdate "st02 sentence [Zelena] scrollbarget "zelena end to myblue staticupdate "st03 sentence [Modra] scrollbarget "modra end to zbrisi cs osi oznake puscice end to vrteziEnd windowdelete "w2 end Make "enota 40 Make "kotrotacije 45 Make "p 13 Make "rkx 0 Make "rky 0 Make "tkx 2 Make "tky 3 Make "w1h 90 Make "w1w 150 Make "w2h 120 Make "w2w 150 init