{"id":444,"date":"2023-04-19T10:48:41","date_gmt":"2023-04-19T10:48:41","guid":{"rendered":"https:\/\/tarkvara.thkit.ee\/veeb\/?page_id=444"},"modified":"2023-05-09T16:53:57","modified_gmt":"2023-05-09T16:53:57","slug":"kukkumine","status":"publish","type":"page","link":"https:\/\/tarkvara.thkit.ee\/veeb\/kukkumine\/","title":{"rendered":"Kukkumine"},"content":{"rendered":"\n<p>Tegelikus elus toimuvaid liikumisi j\u00e4ljendades tuleb m\u00f5nigikord ka kukkumist ehk vaba langemist j\u00e4rgi teha. J\u00e4rgnevalt m\u00f5ned n\u00e4ited, seletused ja soovitused selle kohta.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ring ekraanil<\/strong><\/p>\n\n\n\n<p>Kukkumine kipub millegip\u00e4rast vahel kergesti palliga seostuma. Pall aga teadaolevalt enamasti<br>ringikujuline. Seet\u00f5ttu tuletame meelde, kuidas sai ringi joonistada ekraanile. Ristk\u00fcliku puhul<br>piisas joonistamiseks \u00fchest k\u00e4sust. Ringi ja muude kujundite puhul aga tuleb joonistamist alustada k\u00e4suga beginPath(). Seej\u00e4rel luua vajalikud kujundid. Ning l\u00f5puks \u00f6elda stroke() v\u00f5i fill() vastavalt sellele, kas soovitakse n\u00e4ha vaid piirjooni v\u00f5i siis kogu kujund seest \u00e4ra t\u00e4ita. Ning ringi joonistamiseks sobib kaare tegemise k\u00e4sklus (arc). M\u00e4\u00e4ratakse, keskpunkt, raadius, kaare algnurk ja kaarepikkus radiaanides ning joonistamise suund. Ringi puhul v\u00f5ib alustada algusest (ehk nullkraadist), t\u00e4isringiks on 2 piid ehk 2*Math.PI ning joonistamise suund pole t\u00e4htis, siin n\u00e4ites j\u00e4tsime selle true-ks.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt;\n&lt;html&gt;\n &lt;head&gt;\n &lt;title&gt;Kukkumine&lt;\/title&gt;\n &lt;script&gt;\n var x=20, y=20, r=10, samm=0;\n function joonista(){\n var t=document.getElementById(&quot;tahvel&quot;);\n var g=t.getContext(&quot;2d&quot;);\n g.clearRect(0, 0, t.width, t.height);\n g.strokeStyle=&quot;red&quot;;\n g.beginPath()\n g.arc(x, y, r, 0, 2*Math.PI, true);\n g.stroke()\n }\n &lt;\/script&gt;\n &lt;\/head&gt;\n &lt;body onload=&quot;joonista()&quot;&gt;\n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;\n style=&quot;background-color:yellow&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt;\n &lt;\/body&gt;\n&lt;\/html&gt;\n\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-16.png\" alt=\"\" class=\"wp-image-482\" width=\"420\" height=\"294\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-16.png 420w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-16-300x210.png 300w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-25 has-custom-font-size is-style-no-shadow has-small-font-size\"><a class=\"wp-block-button__link has-dark-sky-gradient-background has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong>\u00dchtlane kukkumine<\/strong><\/p>\n\n\n\n<p>\u00dclalt alla liikumine toimub sarnaste arvutuste tulemusena nagu ennist vaadatud vasakult paremale liikumine &#8211; vaid muuta tuleb y-koordinaati. Algusfunktsioonis k\u00fcsitakse ligip\u00e4\u00e4s tahvlile ja temale joonistamiseks vajalikule graafilisele kontekstile (muutujad t ja g). K\u00e4sklus<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n setInterval(&#039;liigu()&#039;, 100);\n\n<\/pre><\/div>\n\n\n<p>teatab, et funktsioon liigu() tuleb k\u00e4ivitada iga 100 millisekundi tagant, ehk siis 10 korda<br>sekundis. Seda ooteaega saab katsetada ja muuta, aga 100 on osutunud suhteliselt kuldseks<br>keskteeks. Pikem ooteaeg n\u00e4ib juba silmale viivitusena. L\u00fchema aja puhul aga ei pruugi seade suuta enne pilti korralikult valmis joonistada.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt;\n&lt;html&gt;\n &lt;head&gt;\n &lt;title&gt;Kukkumine&lt;\/title&gt;\n &lt;script&gt;\n var x=20, y=20, r=10, ysamm=1;\n var t, g; \/\/tahvel, graafiline kontekst\n\n function algus(){\n t=document.getElementById(&quot;tahvel&quot;);\n g=t.getContext(&quot;2d&quot;);\n setInterval(&#039;liigu()&#039;, 100);\n }\n\n function joonista(){\n g.clearRect(0, 0, t.width, t.height);\n g.strokeStyle=&quot;red&quot;;\n g.beginPath()\n g.arc(x, y, r, 0, 2*Math.PI, true);\n g.stroke()\n }\n\n function liigu(){\n y=y+ysamm;\n joonista();\n }\n &lt;\/script&gt;\n &lt;\/head&gt;\n &lt;body onload=&quot;algus()&quot;&gt;\n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;\n style=&quot;background-color:yellow&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt;\n &lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"346\" height=\"248\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-17.png\" alt=\"\" class=\"wp-image-484\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-17.png 346w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-17-300x215.png 300w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-no-shadow\"><a class=\"wp-block-button__link has-dark-gray-background-color has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Kiirenev kukkumine<\/strong><\/p>\n\n\n\n<p>Tavaelu j\u00e4lgides saab k\u00f5rgemalt kukkudes k\u00e4tte suurema kiiruse. Ehk siis kiirus kukkumise ajal<br>kasvab. Mingist suurusest hakkab kiirust piirama \u00f5hutakistus, aga lihtsamate arvutuste juures ka f\u00fc\u00fcsika\u00f5pikus j\u00e4etakse \u00f5hutakistus v\u00e4lja. V\u00e4liolukorda \u00fcsna t\u00e4pselt saaks j\u00e4ljendada, kui arvestada, mitu ekraanipunkti vastab \u00fchele meetrile looduses ning siis vastavalt esemed ja raskuskiirendus paika ajada. Lihtsamal juhul aga v\u00f5ib kukkumissammule igal ringil veidi otsa liita, et sammu pikkus suureneks. Ning sobivat tulemust saab juba silma j\u00e4rgi hinnata. Siin n\u00e4ites said k\u00f5igepealt \u00fcles muutujad sammu ja kiirenduse kohta<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n var ysamm=1, ykiirendus=0.4;\n\n<\/pre><\/div>\n\n\n<p>Liikumisfunktsioonis k\u00f5igepealt suurendatakse sammu kiirenduse jagu ning siis liigutakse igrekiga sammu jagu allapoole.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n ysamm=ysamm+ykiirendus;\n y=y+ysamm;\n\n<\/pre><\/div>\n\n\n<p>Kood tervikuna<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt;\n&lt;html&gt;\n &lt;head&gt;\n &lt;title&gt;Kukkumine&lt;\/title&gt;\n &lt;script&gt;\n var x=20, y=20, r=10;\n var ysamm=1, ykiirendus=0.4;\n var t, g; \/\/tahvel, graafiline kontekst\n\n function algus(){\n t=document.getElementById(&quot;tahvel&quot;);\n g=t.getContext(&quot;2d&quot;);\n setInterval(&#039;liigu()&#039;, 100);\n }\n\n function joonista(){\n g.clearRect(0, 0, t.width, t.height);\n g.strokeStyle=&quot;red&quot;;\n g.beginPath()\n g.arc(x, y, r, 0, 2*Math.PI, true);\n g.stroke()\n }\n\n function liigu(){\n ysamm=ysamm+ykiirendus;\n y=y+ysamm;\n joonista();\n }\n &lt;\/script&gt;\n &lt;\/head&gt;\n &lt;body onload=&quot;algus()&quot;&gt;\n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;\n style=&quot;background-color:yellow&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt;\n &lt;\/body&gt;\n&lt;\/html&gt;\n\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"250\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-18.png\" alt=\"\" class=\"wp-image-487\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-18.png 379w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-18-300x198.png 300w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-no-shadow\"><a class=\"wp-block-button__link has-dark-gray-background-color has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Kukkumiskoha m\u00e4\u00e4ramine hiirega<\/strong><\/p>\n\n\n\n<p>Liikumist j\u00e4llegi mugavam ekraanil juhatada hiirega. Siin n\u00e4ites leitakse k\u00f5igepealt hiire asukoht tahvli suhtes (muutujad hx ja hy) ning p\u00e4rast paigutatakse ring vastavale kohale. Vajalik on samuti ysamm&#8217;u ehk allakukkumiskiiruse m\u00e4\u00e4ramine nulliks, sest muul juhul j\u00e4tkaks pall hiirevajutuse kohast endise kiirusega kukkumist ning varsti poleks teda ekraanil v\u00f5imalik enam kuigiv\u00f5rd j\u00e4lgida<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\nfunction hiirAlla(e){\n var tahvlikoht=t.getBoundingClientRect();\n var hx=e.clientX-tahvlikoht.left;\n var hy=e.clientY-tahvlikoht.top;\n x=hx;\n y=hy;\n ysamm=0;\n }\n\n<\/pre><\/div>\n\n\n<p>Kui n\u00fc\u00fcd n\u00f5ndamoodi toimetada, siis igal hiire vajutamise korral h\u00fcppab sinna pall ja asub sealt vaikselt alla kukkuma. Kood tervikuna.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt;\n&lt;html&gt;\n &lt;head&gt;\n &lt;title&gt;Kukkumine&lt;\/title&gt;\n &lt;script&gt;\n var x=20, y=20, r=10;\n var ysamm=1, ykiirendus=0.4;\n var t, g; \/\/tahvel, graafiline kontekst\n\n function algus(){\n t=document.getElementById(&quot;tahvel&quot;);\n g=t.getContext(&quot;2d&quot;);\n setInterval(&#039;liigu()&#039;, 100);\n }\n\n function joonista(){\n g.clearRect(0, 0, t.width, t.height);\n g.strokeStyle=&quot;red&quot;;\n g.beginPath()\n g.arc(x, y, r, 0, 2*Math.PI, true);\n g.stroke()\n }\n\n function liigu(){\n ysamm=ysamm+ykiirendus;\n y=y+ysamm;\n joonista();\n }\n function hiirAlla(e){\n var tahvlikoht=t.getBoundingClientRect();\n var hx=e.clientX-tahvlikoht.left;\n var hy=e.clientY-tahvlikoht.top;\n x=hx;\n y=hy;\n ysamm=0;\n }\n &lt;\/script&gt;\n &lt;\/head&gt;\n &lt;body onload=&quot;algus()&quot;&gt;\n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;\n style=&quot;background-color:yellow&quot;\n onmousedown=&quot;hiirAlla(event)&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt;\n &lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"354\" height=\"283\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-19.png\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-19.png 354w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-19-300x240.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-no-shadow\"><a class=\"wp-block-button__link has-dark-gray-background-color has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong><em>Peatumine servas<\/em><\/strong><\/p>\n\n\n\n<p>Nagu niisama liikumise juures, nii ka kukkumise puhul on vahel hea, kui kokkupandud kujundid&nbsp; meie tahtmata silmapiirilt ei kao. Taas tuleb kontrollida, et soovitav j\u00e4rgmine asukoht oleks lubatud&nbsp; ala sees, vaid siis liigutakse edasi. Ning tulevikule m\u00f5eldes on lisatud muutuja ka x-suunalise&nbsp; liikumise tarbeks. Lihtsalt kuna xsamm on parajasti 0, siis kukutakse otse alla. Kui juhtub, et uus&nbsp; leitud asukoht satuks tahvlilt v\u00e4lja, siis pannakse x ja y-sammud nulliks.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n function liigu(){ \n ysamm=ysamm+ykiirendus; \n if(kasSees(x+xsamm, y+ysamm)){ \n x=x+xsamm; \n y=y+ysamm;  \n } else { \n xsamm=0; ysamm=0; \n } \n joonista(); \n } \n\n<\/pre><\/div>\n\n\n<p>Ringi peatamise v\u00f5imega kood tervikuna:&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt; \n&lt;html&gt; \n &lt;head&gt; \n &lt;title&gt;Kukkumine&lt;\/title&gt; \n &lt;script&gt; \n var x=20, y=20, r=10; \n var ysamm=1, xsamm=0, ykiirendus=0.4; \n var t, g; \/\/tahvel, graafiline kontekst \n  \n function algus(){ \n t=document.getElementById(&quot;tahvel&quot;); \n g=t.getContext(&quot;2d&quot;); \n setInterval(&#039;liigu()&#039;, 100); \n } \n  \n function joonista(){ \n g.clearRect(0, 0, t.width, t.height); \n g.strokeStyle=&quot;red&quot;; \n g.beginPath() \n g.arc(x, y, r, 0, 2*Math.PI, true); \n g.stroke()\n } \n  \n function liigu(){ \n ysamm=ysamm+ykiirendus; \n if(kasSees(x+xsamm, y+ysamm)){ \n x=x+xsamm; \n y=y+ysamm;  \n } else { \n xsamm=0; ysamm=0; \n } \n joonista(); \n } \n function kasSees(uusX, uusY){ \n if(uusX-r&lt;0){return false;} \n if(uusX+r&gt;t.width){return false;} \n if(uusY-r&lt;0){return false;} \n if(uusY+r&gt;t.height){return false;} \n return true; \n } \n function hiirAlla(e){ \n var tahvlikoht=t.getBoundingClientRect();  var hx=e.clientX-tahvlikoht.left; \n var hy=e.clientY-tahvlikoht.top; \n x=hx; \n y=hy; \n ysamm=0; \n } \n &lt;\/script&gt; \n &lt;\/head&gt; \n &lt;body onload=&quot;algus()&quot;&gt; \n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;  \n style=&quot;background-color:yellow&quot; \n onmousedown=&quot;hiirAlla(event)&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt; \n &lt;\/body&gt; \n&lt;\/html&gt; \n\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"394\" height=\"257\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-20.png\" alt=\"\" class=\"wp-image-493\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-20.png 394w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-20-300x196.png 300w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-no-shadow\"><a class=\"wp-block-button__link has-dark-gray-background-color has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size\"><strong><em>Palli loopimine\u00a0<\/em><\/strong><\/p>\n\n\n\n<p>N\u00fc\u00fcdseks on juba piisavalt oskusi kogunenud, et midagi t\u00e4iesti elavat ja usutavat kokku panna.&nbsp; N\u00e4itena palli heitmise rakendus, kus pall hakkab liikuma hiire poole. Mida kaugemal hiir on, seda&nbsp; kiiremini. Servade juures kontrollitakse, et pall sealt v\u00e4lja ei l\u00e4heks. Kui serv ette tuleb, siis&nbsp; v\u00f5etakse hoog maha. Kui v\u00f5imalust, hakkab ta sellest kohast uuesti allapoole kukkuma. Kui alla&nbsp; j\u00f5udnud, siis peab lihtsalt j\u00e4\u00e4ma ootama, kuni hiirega uuesti vajutatakse ja pall liikuma&nbsp; meelitatakse.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Tehniliselt midagi v\u00e4ga erip\u00e4rast v\u00f5rreldes eelnenuga polegi. M\u00f5lema koordinaadi puhul pannakse&nbsp; pall sammuma hiire suunas. Sammu pikkus v\u00f5rdeline kaugusega hiirest.&nbsp;&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n xsamm=(hx-x)*kiiruskoef; \n ysamm=(hy-y)*kiiruskoef; \n\n<\/pre><\/div>\n\n\n<p>Tulemusena aga valmib t\u00e4iesti mitmek\u00fclgne palli heitmise rakendus, mida saab edaspidi&nbsp; mitmesuguste liikuvate mudelite juures kasutada.&nbsp;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;!doctype html&gt; \n&lt;html&gt; \n &lt;head&gt; \n &lt;title&gt;Kukkumine&lt;\/title&gt; \n &lt;script&gt; \n var x=20, y=20, r=10; \n var ysamm=1, xsamm=0, ykiirendus=0.4, kiiruskoef=0.1;  var t, g; \/\/tahvel, graafiline kontekst \n  \n function algus(){ \n t=document.getElementById(&quot;tahvel&quot;); \n g=t.getContext(&quot;2d&quot;); \n setInterval(&#039;liigu()&#039;, 100); \n } \n  \n function joonista(){ \n g.clearRect(0, 0, t.width, t.height); \n g.strokeStyle=&quot;red&quot;; \n g.beginPath() \n g.arc(x, y, r, 0, 2*Math.PI, true); \n g.stroke() \n } \n  \n function liigu(){ \n ysamm=ysamm+ykiirendus; \n if(kasSees(x+xsamm, y+ysamm)){ \n x=x+xsamm; \n y=y+ysamm;  \n } else { \n xsamm=0; ysamm=0; \n } \n joonista(); \n } \n function kasSees(uusX, uusY){ \n if(uusX-r&lt;0){return false;}\n if(uusX+r&gt;t.width){return false;} \n if(uusY-r&lt;0){return false;} \n if(uusY+r&gt;t.height){return false;} \n return true; \n } \n function hiirAlla(e){ \n var tahvlikoht=t.getBoundingClientRect(); \n var hx=e.clientX-tahvlikoht.left; \n var hy=e.clientY-tahvlikoht.top; \n xsamm=(hx-x)*kiiruskoef; \n ysamm=(hy-y)*kiiruskoef; \n } \n &lt;\/script&gt; \n &lt;\/head&gt; \n &lt;body onload=&quot;algus()&quot;&gt; \n &lt;canvas id=&quot;tahvel&quot; width=&quot;300&quot; height=&quot;200&quot;  \n style=&quot;background-color:yellow&quot; \n onmousedown=&quot;hiirAlla(event)&quot;&gt;&lt;\/canvas&gt;&lt;br \/&gt; \n &lt;\/body&gt; \n&lt;\/html&gt; \n\n<\/pre><\/div>\n\n\n<p>Nagu piltidelt n\u00e4ha, saab n\u00f5nda panna palli oma asukohta muutma.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"397\" height=\"277\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-21.png\" alt=\"\" class=\"wp-image-497\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-21.png 397w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-21-300x209.png 300w\" sizes=\"auto, (max-width: 397px) 100vw, 397px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"354\" height=\"245\" src=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-22.png\" alt=\"\" class=\"wp-image-498\" srcset=\"https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-22.png 354w, https:\/\/tarkvara.thkit.ee\/veeb\/wp-content\/uploads\/2023\/04\/image-22-300x208.png 300w\" sizes=\"auto, (max-width: 354px) 100vw, 354px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-no-shadow\"><a class=\"wp-block-button__link has-dark-gray-background-color has-background wp-element-button\" href=\"https:\/\/tarkvara.thkit.ee\/js\/kukkumine.html\" target=\"_blank\" rel=\"noreferrer noopener\">Proovi j\u00e4rgi<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tegelikus elus toimuvaid liikumisi j\u00e4ljendades tuleb m\u00f5nigikord ka kukkumist ehk vaba langemist j\u00e4rgi teha. J\u00e4rgnevalt m\u00f5ned n\u00e4ited, seletused ja soovitused selle kohta. Ring ekraanil Kukkumine kipub millegip\u00e4rast vahel kergesti palliga seostuma. Pall aga teadaolevalt enamastiringikujuline. Seet\u00f5ttu tuletame meelde, kuidas sai ringi joonistada ekraanile. Ristk\u00fcliku puhulpiisas joonistamiseks \u00fchest k\u00e4sust. Ringi ja muude kujundite puhul aga tuleb &hellip; <a href=\"https:\/\/tarkvara.thkit.ee\/veeb\/kukkumine\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Kukkumine<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-444","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":38,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/444\/revisions"}],"predecessor-version":[{"id":532,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/444\/revisions\/532"}],"wp:attachment":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/media?parent=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}