Programozgattam most egy kicsit, hogy lement a fizika OKTV második fordulója és volt egy kis szabad időm. Előszöris az online html szerkesztőm helyett csináltam valami újat (amiről majd írok bővebben is, ha teljesen kész lesz), de mindezt azért csináltam, hogy vektorokkal számolgathassunk egy kicsit.
Szóval azt csináltam, hogy elkészítettem egy sablont, vagy minek hívják, aminek a segítségével el lehet végezni tetszőleges koordinátájú vektorokkal a matekórán eddig tanult alapműveleteket. Inkább megmutatom, vagyis annál még egy picit bonyolultabb, szóval leírom mit csináljatok, hogy lássátok miről beszélek.
- Nyissátok meg ezt az oldalt: vektor/vektor.js. Majd még mindjárt ejtek róla pár szót.
- Nyissátok meg ezt az oldalt is: vektor/vektor.html.
- (Igen, eredetileg az volt, hogy másoljátok be az előző fájlok tartalmát egy szerkesztőbe, de így egyszerűbb, nem?)
- Ha minden jól ment, akkor látnotok kell egy oldalt, amin meg lehet adni három vektor és két skalár adatait, az oldalon pedig ezekkel lehet számolni. Ha itt nem stimmel valami, akkor kiabáljatok hangosan vagy írjatok egy hozzászólást, hogy nem működik.
Naszóval, most tegyük fel, hogy működik, amit mondtam. Az index.html fájl szerkesztésére nem lesz szükség, azt becsukhatjátok.
A kevésbé izgalmas dolog, amit lehet csinálni a programmal, az a matekházik ellenőrzése. Beírod a számokat és kihozza a végeredményt. Az izgalmasabb dolog az, hogy egyszerűen módosíthatjátok is a vector.js fájlt, és akkor bármilyen tetszőleges műveletet el tudtok végezni három adott vektorral és két adott skalárral. Persze a vektor.js egy nagyon válogatós fájl, nem lehet akármit beleírni, elmondom hogyan működik, közben nézzétek is, hogy miről beszélek. Valójában egy programot fogunk írni, ami bizonyos adatok alapján kiszámítja egy vektor koordinátáit.
Az első és utolsó sor (var fs = [ és a ];) jelentése számunkra most mindegy, a lényeg a többi. A – nevezzük mondjuk számításnak – számítások definíciója két kapcsos zárójel közé van leírva, egymástól pedig vesszővel vannak elválasztva, valahogy így néz ki, ha eltekintünk attól, hogy több sorba van írva és a konkrét definíciókat elhagyjuk:
{ ... }, { ... }, { ... }
A kapcsos zárójeleken belül három dolgot definiálunk, a számítás leírását (name), és a koordinátákat (x és y). Ezek úgy néznek ki, hogy leírjuk, mit definiálunk, írunk egy kettőspontot, leírjuk a konkrét definíciót, majd vesszővel választjuk el a következő definiált dologtól, ami ebben az esetben új soron kezdődik. A konkrét definíciót még mindig elhagyva így néz ki a számítások leírása:
{ name : definíció, x : definíció, y : definíció }, { ugyanaz, mint az előzőben }, { ... }
A name definíciója nagyon egyszerű, két idézőjel közé kell rakni a leírást. A koordináták definíciója egy függvény (function). A konkrét számítás elé azt kell írni, hogy function () {return , utána pedig azt, hogy ;} Most tehát már minden megvan, csak a konkrét számítás nem:
{ name : "Leírás", x : function () {return számítás ;}, y : function () {return számítás ;} }
A számítás pedig egy egyszerű matematikai művelet, amiben használható a négy alapművelet, lehet zárójelezni, és lehet hivatkozni a skalárokra (m és n) vagy az a, b, c vektorok x és y koordinátáira. Egyszerűbb megérteni, ha a vektor.js-ben lévő definíciókat nézzük:
{ name: "Felezőpont (a és b)", x : function () {return (a.x + b.x) / 2 ;}, y : function () {return (a.y + b.y) / 2 ;} }
Itt tehát az x koordinátát a következő módon számoljuk ki: (a vektor x koordinátája összeadva a b vektor x koordinátájával) per kettő. Az y koordinátánál ugyanez.
{ name : "Eltolás (a-t m-el felfelé és n-el jobbra toljuk", x : function () {return m + a.x ;}, y : function () {return n + a.y ;} }
Itt is elég egyértelmű, hogy az új x koordinátát az a vektor x koordinátájának és az m-nek az összegeként kapjuk, míg az új y koordináta az a y koordinátájának és az n-nek az összege.
Most már rátok bízom a dolgot, próbáljátok ki, és esetleg írjátok meg, milyen transzformációkat vagy vektorszámításokat tudtok leírni. Lényeh, hogy a vektor.js fájlt a fent leírt szintaxis szerint módosítsátok, kattintsatok a Mentés gombra, a Vektorok oldalt pedig frissítsétek és ellenőrizzétek, hogy megfelelően működnek-e a számítások.
Pár tipp: az a ellentettvektora; az y-tengely mentén m-szeres nagyítás és az x tengely mentén n-szeres nagyítás; aki pedig megmondja bizonyítással együtt, hogy annak a háromszögnek, aminek az oldalfelező pontjait a, b és c vektorok jelölik, hol a súlypontja, annak felbecsülhetetlen eszmei értékű gratulációmat fogom személyesen átnyújtani.