INFORMAŢII

De-a lungul timpului am folosit multe limbaje de programare. Totul a început cu BASIC pe un HC-85, (compatibil SPECTRUM ZX Certified webmaster) în liceu. Aşa a devenit pasiune programarea. Pentru că posibilitătile BASIC-ului erau limitate, am învătat să programez în Z80 assembler, folosind un calculator COBRA modificat (cu ROM-OPUS).

Odată cu apariţia şi răspandirea PC-ului am trecut la GWBasic, QBasic, ca în final să mă opresc la Turbo PASCAL 6.0, de care m-am "îndrăgostit", pentru că oferea şi posibilitatea de programare în assembler 80286. Ca observaţie:95% din programele de pe această pagină au fost scrise initial în Turbo PASCAL 6.0. Abia acum, de curând, le-am portat în FREE PASCAL.

Mai târziu, în facultate am "pus mana" pe C++, Java, PHP, MySQL, HTML, VBA etc.

In anul 1996 am fost angajat, pentru 2 ani, la firma de construcţii TRACON, în cadrul atelierului de proiectare, unde am realizat programe de calcul de rezistenţă în Turbo PASCAL 6.0.

Am lucrat timp de 14 ani la firma de topografie INFOTOP, unde am realizat majoritatea programelor de topografie, geodezie, cadastru în AutoLISP şi VBA.

Timp de 2 ani, am lucrat în cadrul grupului de firme APAN, unde am programat în HTML, CSS, JAVASCRIPT, PHP şi MySQL.

Acum, lucrez la SDEE Electrica, unde mă „familiarizez„ cu Visual Studio, în C# şi VB.

Multe dintre programe s-au născut din dorinţa de a vedea "dacă sunt şi eu în stare să fac aşa ceva". şi cred că am fost. Aşa a apărut celebrul joc WOLFENSTEIN în varianta proprie "a la Dorin".

Pentru a-mi realiza programele a trebuit să învăţ multă matematică şi fizică, pentru că orice soi de grafică mai pretenţioasă pe calculator, merge mână în mână cu matematica. Cu cât este mai sofisticat un program cu atât au fost mai multe probleme de matematică şi de fizică de rezolvat. Aveţi asta în minte şi nu mă judecaţi prea aspru dacă uneori grafica este mai „buggy„. Oricum am sute de programe care zac pe diskete şi hard discuri vechi. Din ele vă prezint câteva. O să adaug pe măsura ce le portez în FREEPASCAL şi pe măsura cererii voastre, mai mult.

JOCURI


COBRA

Primul calculator personal pe care am început să "butonez" a fost un compatibil SPECTRUM, şi anume:COBRA. Bazat pe superbul microprocesor Z80, tactat la 3.5 MHz, cu 16Kb ROM şi 48Kb RAM, a fost suficient să încep realizarea de programe. În timp, depăşind limbajul BASIC, am trecut la ASM şi acel COBRA a căpătat încă un EPROM de 16kb pe care era instalat ca sistem de operare OPUS. În era PC, dorul de vechiul meu COBRA s-a transformat în dorinţa de a-l emula. Astfel am început în PASCAL să emulez fiecare instrucţiune a microprocesorului Z80 (inclusiv cele nedocumentate). Programul, compilat în TURBO PASCAL 6.0, îndeplineşte toate funcţiile vechiului COBRA, chiar şi sistemul de operare OPUS, în monocrom şi color. În arhivă se află şi câteva din jocurile la care am pierdut o groază de timp pentru a le termina. Taste: F1..F11, Spatiu, Enter etc.

Pentru a vedea unele dintre cele mai frumoase jocuri de Spectrum, se poate folosi, on-line şi emulatorul jSpeccy.



CELEBRE

Wolfenstein - Clona celebrului WOLFENSTEIN, joc care a lansat conceptul "first person view". În varianta mea, jocul are şi editor de nivele, plus posibilitatea de a vedea deplasarea proiectilului tras, tavan şi podea texturată, blocuri de gheaţă care se topesc dacă sunt atinse de proiectile, vizualizarea hărţii, ziduri cu textură mobilă etc. Pe ziduri apare şi poza subsemnatului (în anul 1992), a Elenei şi a lui Mihaiţă (adaugată mai recent). Numărul duşmanilor pe fiecare nivel este de 10. Taste: Space:deschide uşi şi trape laser; Enter:GOD MODE; 1:schimbă arma; 2:opreşte/activează sunetul; Săgeti:mişca; Ctrl:Trage. Se poate mişca şi cu mouse-ul: click stânga trage, click drapta pentru deplasare.

Raid aerian - Este WOLFENSTEIN mutat în aer. O luptă pe viaţă şi pe moarte cu 10 duşmani, în care singurul ajutor îl ai de la ochitorul automat. Împuşcă inamicii şi depozitele de muniţie (cu ziduri verzi). Merge foarte bine cu mouse-ul. Click stânga - mitraliera. Click dreapta - bomba. Apasă imediat după lansare Enter ca să joci în GOD MODE; altfel trebuie să fii al naibii de bun. Dacă avionul este avariat începe să trepideze. Urmăreşte compasul pentru a te orienta. Taste: săgeţi; C:desenează/şterge carlinga; Ctrl:trage; w-e:măreşte/micşorează raza de acţiune a radarului; a-s:viteza de deplasare; h:harta; Enter:GOD MODE.

Mortal kombat - Este primul meu joc 3D care foloseşte un motor de particule (pentru simularea sângelui, focului, fulgerelor). Joci împotriva calculatorului, de-alungul a 16 scene diferite, şi trebuie să obţii 2 victorii din 3. Unele meciuri vor fi contratimp şi mare atenţie la peisaj: trebuie să te fereşti de lava încinsă, ghimpi otrăviţi, curent electric, cutite, cascade etc. Taste (pe pad-ul numeric): Săgeti:deplasare; 8-9:lovitură cu pumnul; 5-6: lovitură cu piciorul; 1-2:salt; 7-4:lovitură specială (doar când se încarcă bara albastră). Succes.

Need for speed - Un joc 3D, neterminat dar funcţional. Pentru acest joc am finalizat modulul de trasare a unei linii 3D. Are şi editor de piste. Taste: Enter:Măreşte/repară stricăciunile; k:inalţă gardurile de protecţie; Săgeţi:deplasează; F1-F8:schimbă punctul de privire; h:arată/ascunde harta; v:arată/ascunde vitezometrul; Space:turbo.

Survol - Misiunea este să ajungi întreg cu nava printre inamici. Nu este uşor atâta timp cât rachetele nu funcţionează decât de la o anumita altitudine, iar terenul este foarte variat. Un joc 3D, cu editorul de nivele inclus. Practic editorul de nivele a fost cel mai interesant de făcut. Tastele sunt scrise pe ecran.

Invadatorii spaţiali - 23-octombrie-2015. Jocul nu cred că are nevoie de nici o prezentare... Trebuie să obţii un scor cât mai mare, împuşcând tot ce mişcă. Tastele sunt săgeţi şi "Space" pentru tras.



JOCURI DE STRATEGIE

Şah - Nu joacă la un nivel prea puternic, dar m-a ajutat să înţeleg acest joc. Algoritmul folosit pentru alegerea mutării este mini-max, iar adâncimea până la care se merge în arbore este variabilă (dată de jucător). După ce am interacţionat cu GO-ul, am abandonat şah-ul.

26-ianuarie-2013 - Programul "SAHN.EXE" noul motor de şah. Joacă mai bine ca cel vechi (îl bate rău) şi pare mai rapid. Foloseşte 'Alfa-Beta pruning'.

Cinci în linie (GO-MOKU) - Jocul se desfăşoară pe tabla de GO de 19x19, şi se joacă prin mutări alternative între doi jucători. Scopul jocului este de a obţine un sir de cinci piese de aceeaşi culoare, fie pe orizontală, verticală sau pe diagonală. Calculatorul este un adversar destul de bun. Algoritmul este static: alege cea mai bună mutare posibilă de pe tablă, la momentul dat (nu parcurge înainte). Tastele sunt: săgeţile şi enter.

4-ianuarie-2013: Programul "XINLING.EXE" este varianta cosmetizată a celui de mai sus. Variabilele referitoare la cine începe jocul şi tipul de joc, se modifică prin simplu click stanga pe eticheta corespunzătoare.

Joc de table - Joacă table cu calculatorul sau priveşte-l cum joacă singur. Pentru mutări am făcut o funcţie de evaluare statică. Cu cât este mai departe de "casă" programul joacă agresiv (la eliminarea adversarului), pe măsură ce se apropie de "casă", ponderea se pune pe siguranţă (adică pe realizarea de porţi). Se joacă cu mouse-ul, primul click se face pe zarul care se foloseşte, al doilea click pe coloana de unde mut piesa. Data de naştere a acestui joc este aprilie 2012, dupa ce Mihăiţă a făcut o pasiune pentru el.

Jocul de GO - Era în anul 1988, când mi-a picat în mână o carte scrisa de Gheorghe Păun, despre jocuri competiţionale, printre care şi GO-ul. De-atunci acest joc mă fascinează. Am încercat de-a-lungul timpului să fac un program capabil să joace cât de cât GO, însă încercările mele au eşuat. Aici este un program destinat învăţării mutărilor de deschidere (joseki-urilor). Fişierul cu joseki-uri l-am scris "de mână" din cartea "Dictionary of basic joseki" scrisă de Yosio Ishida, pe care mi-a pus-o la dispoziţie bunul meu prieten Toma Iulian, mare jucător de go (3d). În program se foloseşte mouse-ul aşa: Click dreapta: afişează sau şterge continuările. Click stânga: dat pe poziţie corectă continuă secvenţa, pe poziţie greşită, şterge o mutare din secvenţa curentă. Sunetul din difuzor se aude când s-a terminat secvenţa curentă. Orice tastă apăsata: exit. 24-februarie-2013 - Am adăugat fişierul "DICT.DAT" care conţine 'Kogo's joseki dictionary'. Pentru preluarea datelor am făcut un program care citeşte tot arborele de mutări din fişiere de tip SGF.

9-martie-2016 - Multă vreme jocul de go, a fost considerat apanajul fiinţei umane... considerându-se că este imposibil de programat, jocul presupunând nu numai luptă la nivel tactic, ci şi strategic. Google, în decurs de un an a reuşit să demonstreze contrariul. Programul AlphaGo dezvoltat de echipa condusă de Demis Hassabis, a reuşit în octombrie 2015 să învingă campionul european de GO, Fan Hui (2p) cu scorul de 5-0. După această performanţă, echipa Google Deep Mind, l-a provocat pe campionul lumii la Go, Lee Sedol (9p). Astăzi începe demitizarea acestui joc milenar, în care marii maeştrii erau încununaţi cu legende mistice... Trăim viitorul acum !. Lee Sedol încă zâmbeşte confident. Vineri, 11-martie-2016, după două partide, scorul este 2-0 pentru AlphaGo...

21-februarie-2017 - Cu scop demonstrativ, am adaugat o aplicatie JavaScript care folosește o rețea neuronală (Deep Neural Network) pentru a juca GO. Este încântător cât de repede "calculează" mutările... Mă gândesc la AlphaGo...

27-mai-2017 - A trecut un an de când AlphaGo a fost oficial recunoscut ca jucător profesionist (9p) de go. Între timp, Google a îmbunătățit forța de joc drept care l-a provocat pe campionul mondial, Ke Jie (9p) la un set de 3 partide. Scorul final a fost de 3-0. Pentru AlphaGo. Între partidele 2 si 3, Ke Jie a avut o zi de pauză, zi în care AlphaGo a jucat 2 partide: una în care a jucat alături de 2 jucători umani, profesioniști (jucând câte o mutare, pe rând, pentru unul și pentru celălalt), și o partidă împotriva a 5 jucători (9p), care s-au forțat să găsească cel mai bun răspuns la mutările programului. AlphaGo a terminat turneul neînvins. O mică observație: spre sfârșitul partidei, cei 5 mari maeștrii de go, au făcut o mutare menită să mai "ciupească" 1 sau 2 puncte. Răspunsul lui AlphaGo a fost "uman": le-a oferit mult mai multe puncte... era prea mare diferența de scor dintre ei ca să conteze... Imediat, maeștrii au abandonat lupta. Una peste alta, mica victorie a lui Lee Sedol de anul trecut, devine din ce în ce mai valoroasă ...



CUBUL LUI RUBIK

Este jocul pe care încă îl joc. Mi-a luat 2 săptămâni să-l programez în TURBO PASCAL 6.0. Simulează un cub rubik 3D de dimensiune 2x2x2, 3x3x3, 4x4x4 şi 5x5x5. Se mişcă cu mouse-ul, click stânga pe faţa pe care vrei s-o muţi, apoi drag-and-drop în poziţia în care vrei s-o muţi; click dreapta pentru rotaţie. Taste: a:amestecă; s:schimbă dimensiunile cubului; r:rezolvă cubul 3x3x3; m:face modele interesante.

12-noiembrie-2012: Programul "RUBIC.EXE" este o variantă îmbunătăţită a celui vechi, în ceea ce priveşte rezoluţia şi viteza. Am stabilit mărimea maximă a cubului la 6x6x6 şi am eliminat tastele 'r' şi 'm'. Am adăugat tastele 'z','x','c' (deocamdată e funcţională doar 'z') pentru a 'deforma' cubul, putându-se acum dezlega dominouri ca: 3x3x1, 3x3x2 etc. Încă două taste adăugate (15.11.2012): 'k' pentru salvarea poziţiei, 'l' pentru refacerea ei.

26-noiembrie-2012: Programul "RUBICDOM.EXE" extinde programul cu posibilitatea de a înlocui stikerele colorate cu domino-uri (cu tasta 'd'). Problema se complică substanţial, pentru că piesele trebuie şi orientate corect.

5-decembrie-2012: Programul "RUBICGL.EXE" face desenul cubului RUBIK cu OpenGL.

24-februarie-2016: Programele "MEGAMINX.EXE" şi "PYRAMINX.EXE" vă invită să rezolvaţi cubul lui RUBIK în varianta dodecadron si tetraedru. Tasta 'a' amestecă, iar tasta 's' rezolvă dominoul.Rezolvarea megaminx-ului este intuitivă.

2-iunie-2016: O nouă metodă de a rezolva centrele (N-2)x(N-2) în cubul RUBIK NxNxN

11-ianuarie-2017: Programul "RUBIKSLD.EXE" simulează un nou puzzle cu "aromă" de cub rubik. Tasta 'a' amestecă, iar tasta 's' schimbă dimensiunea tablei.



JOCURI DE LOGICĂ

Detectivul SHERLOCK - Jocul propune găsirea unei configuraţii fixe pornind de la indicii aleatorii. Celebra problemă a lui EINSTEIN (5 case, 5 proprietari, 5 bauturi etc). în anii '90 am găsit pe internet (se foloseau ca motoare de căutare yahoo şi lycos ;)) un joculeţ numit SHERLOCK. Din păcate nu permitea decât dimensiunile 6x6. Aşa că m-am apucat să fac propria mea variantă care permite dimensiuni diferite. Se joacă cu mouse-ul. Click stânga pentru ghicirea unei căsuţe, Click dreapta pentru eliminarea unei posibilităţi. Ca fapt divers: programul a fost terminat fix în martie 2003, când a venit Mihai acasă de la maternitate (după aia nu am mai avut aşa mult timp). În arhivă se găseşte şi varianta mai rapidă, care nu foloseşte bitmap.

Şarada lui EINSTEIN - Programul "EINST.EXE" (4-ianuarie-2013) este varianta redusă a celui de mai sus: are doar 4 tipuri de indicii.

Mută pătratul (KLOTSKI) - Jocul apărea în format analogic (carton-plastic) pe vremea mea (1985-1989) produs de JECO, cu acelaşi nume. Scopul este mutarea pătratului mare (albastru deschis) pe poziţia din cutie marcată cu cerculeţe (uneori este ascunsă privirii de piesele situate deasupra). Am văzut în anii '90 un joc similar numit KLOTSKI, aşa că i-am dat şi eu acelaşi nume, în cinstea orelor pierdute pentru rezolvarea multor probleme. Se mută cu mouse-ul.

Enigma lui DESCARTES - Scopul jocului este de a ghici pe tablă poziţia pieselor negre. Informaţiile primite se referă la numărul de pătrate negre adiacente: pe fiecare linie, respectiv coloană. Click stânga de mouse: pui/iei un pătrat negru; cu dreapta, unul alb.

Biliardul lui FLOYD - Scopul jocului este de a ghici pe tabla de biliard poziţia următoarelor patru tipuri de obstacole, trimiţând o bilă şi primind poziţia ei finală: Paleta "/" sau "\" (bila ricoşează în unghi drept, şi paleta schimbă poziţia); Crucea "+" (bila se întoarce pe unde a venit, până la primul obstacol); Gaura "O" (bilă dispare de pe tablă) şi Poziţia liberă. Se joacă cu mouse-ul.

SCRABBLE - Programul oferă o tabla de joc inteligentă pentru jocul de scrabble între doi jucători umani, calculând scorul. Se joacă cu mouse-ul. Cel puţin un cuvânt din prima manşa trebuie să treacă peste pătratul central, altfel manşa se consideră invalidă. În clipa în care nu se mai pot depune litere din cele 7 extrase, se apasă butonul "OK".

Teren minat (MINESWEEPER) - Varianta mea de MINESWEEPER. Găseşte minele din grilă, pe baza informaţiei numerice despre minele adiacente unui pătrat. Se joacă cu mouse-ul: Click stânga pentru a arăta. Click dreapta pentru a marca. Click dreapta+stânga pentru a "rezolva" toate numerele cunoscute.

SUDOKU - Încearcă să descopei aranjamentul de pe grilă, ştiind că pe fiecare linie, coloană şi subcareu 3x3 trebuie să se afle cifrele de la 1 la 9 o singură dată. Deşi programul original TURBO PASCAL 6.0 merge foarte rapid, nu îmi dau seama de ce FREEPASCAL-ul e aşa de încet la generarea unei grile noi. :(

SOKOBAN - Mută lăzile pe locurile marcate prin X. şi asta în fiecare din cele 6 nivele. Se joacă cu tastele săgeţi.

MAHJONG - Celebrul joc chinezesc de domino-uri. Elimină toată formaţiunea, găsind perechi de pise care se pot ridica fără să necesite mutarea altora (pisele de margine).

Seturi - Scopul jocului este de a crea cât mai multe seturi de câte trei cărţi care au următoarele trăsături: 3 culori, 3 tipuri de umplere, 3 figuri, 3 numere. Regulile după care se consideră un "set" sunt următoarele, pentru fiecare trăsătură: ori toate trei cărţile au aceeaşi trăsătură, ori toate sunt diferite. Oricum, pentru ajutor, butonul drept de mouse arată un set existent.

2048 - 6-aprilie-2014 - Un joc simplu care creează dependenţă. Scopul jocului este de a "strânge" într-un câmp al tablei valoarea 2048. Se mută cu tastele săgeţi sau cu mouse-ul. Tasta "a" încearcă să rezolve automat problema.



JOCURI DE ABILITATE

Biliard - Jocul biliard cu ciocniri realiste între bile. Pentru acest program am învăţat fizica ciocnirilor între bile (cu tot cu efectul de rotaţie a bilei). Permite maximum 4 jucători. Cu mouse-ul se alege direcţia de lovire şi viteza (proporţională cu lungimea tacului). Taste: d:arată/ascunde direcţia de lovire; b:colorează bilele; r:adaugă/elimină efectul de rotire al bilelor

Elimină bilele - Cu siguranţă aţi mai văzut jocul ăsta. Scopul este să elimini toate bilele alăturând mai mult de 2 de aceeaşi culoare. Culoarea "tunului" indică ce bilă este pe ţeavă. Se joacă cu mouse-ul.

Ia şi fugi - ATENţIE: jocul ăsta creează dependenţă. Scopul este să intri în teritoriul inamic, să încercuieşti cât mai mult teritoriu şi să te pui la adăpost. Nu-i uşor când inamicii se mişcă cu viteză şi se înmultesc... Taste: săgeţi:mişcă; space:opreşte (doar pe margine).

Ozn - Este primul joc scris de mine. Cred că prin anul 1993. Atunci era în mare vogă jocul "INVADERS". Taste: săgeţi, space: trage.

Zuma - Tentativa mea de a face ceva asemănător cu celebrul ZUMA. Nici pe departe nu are feeling-ul din original. Dar dorinţa mea a fost doar de a schiţa în linii mari un astfel de motor. Locul paletei şi traseul se stabilesc la început, iar mărimea bilelor este diferită. Se joacă cu mouse-ul.

Nuca în perete - Jocul mai este numit şi BREAKOUT sau ARCANOID. Propune manevrarea unei bile (cu mouse-ul) pentru a distruge 'zidul' de cărămizi. Noutatea constă în faptul că prin apăsarea butonului stâng de mouse, se trece în modul 'DEBUG' în care poţi vedea direcţia de deplasare a bilei după ciocnire, şi punctul de impact (atât pe bilă cât şi pe paletă).

Supravieţuitorul - Jocul îţi propune să supravieţuieşti cât mai mult timp într-un mediu ostil. Te afli undeva în unives, într-o mică navă spaţială printre asteroizi. Singurul mod de a supravieţui este fie să fugi (tastele săgeţi), fie să distrugi asteroizii care se apropie de tine (tasta Space). Problema se complică atunci când asteroizii nu se distrug complet din prima lovitură...

Culege cutiile - Este un joc început şi neterminat, dar funcţional. Trebuie să culegi cutiile verzi într-un peisaj creeat din cutii paralelipipedice. Se folosesc tastele săgeti şi 'Space' pentru salt.



JOCURI DE TIP TETRIS

Un grup de jocuri de tip tetris. Primul este chiar tetris, varianta cu 7 piese. Se joacă cu tastele săgeţi, pauză şi mărirea nivelului de joc cu tastele "=" şi "-". Al doilea are ca scop eliminarea tuturor grupurilor de piese adiacente, mai multe de 2. Se joacă cu mouse-ul. Al treilea foloseşte doar un singur tip de piesă, cu trei culori care pot fi permutate circular cu tasta săgeată sus. Al patrulea joc oferă o tablă în care pătratele colorate adiacente pot fi interschimbate două câte două, prin drag-and-drop cu mouse-ul. Mutarea este validă dacă numărul final de pătrate colorate identic este minim 3. Următoarele două jocuri sunt reprezentări 3D ale jocului tetris clasic. Taste: w,e,r,a,s,d:roteşte piesa curentă; săgeţile:mută piesa curentă; space:dă drumul la piesă; tasta 'Z':pauză; tasta 'X':arată/ascunde cuburile de bază ale piesei. Mouse-ul:butoanele apăsate individual rotesc unghiul de privire; apăsate simultan readuc la unghiul iniţial de privire. Ultimul joc propune jocul de tetris pentru doi parteneri. Oricare dintre parteneri poate fi calculatorul (mai trebuie lucrat la funcţia de notare a celei mai bune mutări pentru jocul automat). Taste: săgeţi pentru primul jucător şi 'a','s','d','w' pentru al doilea; 'p': pentru pauză; 'o': pentru un joc interactiv (tabla adversarului este încărcată cu numărul de linii eliminate de jucător) şi 'i': pentru un joc dinamic (tabla este deplasată dupa fiecare piesa). Cu tasele 'k' şi 'l' se alege modul automat de joc pentru primul jucător, respectiv al doilea.

7-noiembrie-2012: Programul "CULORI2.EXE" are următoarele îmbunătăţiri: un ecran mai generos şi o mai bună funcţionalitate a tastelor (de reţinut: cu tasta + se pune pauză).



JOCURI CU CĂRŢI

Jocuri de societate cu cărţi. Primul te invită să joci ŞEPTIC, cu calculatorul. Pentru a nu merge mai departe la tăiere, apeşi pe numărul corespunzator unei cărţi date. Al doilea joc de cărţi este POKER. Poţi juca cu maximum 4 parteneri virtuali. Al treilea joc este TARNIB (joc pe care l-am jucat "la greu" în armată). Pentru cei care nu ştiu regulamentul de joc, l-am scris pe scurt la începutul programului. Pentru toate jocurile de cărţi se folosesc doar tastele. (în curând o să termin de transcris din Turbo Pascal şi MACAUA)


MATEMATICĂ


PROBLEMA CROIRILOR OPTIME

Problema croirii de reperi dreptunghiulari din bare sau din suprafeţe. Am considerat, pentru croirea 2D (suprafeţe) că reperii pot fi rotiţi. Aceste programe au apărut pe vremea când mă gândeam cum să fac economie la geamurile termopan :)). N-a mai fost cazul. Oricum algoritmul meu este foarte rapid.

Programul "INGHESUI.EXE": încearcă să aranjezi un număr de "n" cutii astfel ca să ocupe cât mai puţin spaţiu. Cu tasta "s" încearcă să găsească calculatorul o soluţie. Pentru a obţine solutia optimă apasă de mai multe ori "s".

22-septembrie-2012: Programul "CROIRE3D.EXE" rezolvă problema croirii în trei dimensiuni. Extrage cat mai multe paralelipipede-reperi din paraleleipipede de dimensiuni date.



HOROSCOP

Studiul astrelor (ştiinţific şi mistic) este o altă pasiune a mea. Cele două programe desenează harta aproximativă a cerului şi a celor 12 constelaţii zodiacale, deasupra locului dorit şi aspectele planetare (poziţionarea relativă dintre planete). Al doilea program permite şi animarea mişcării planetelor cu un interval de timp stabilit. Nici unul (sau niciunul) dintre programe nu face interpretări. Acest program l-am scris şi sub AutoLISP şi acolo am băgat şi interpretările (se poate tipări mai uşor de sub AutoCAD).

7-noiembrie-2012: Programul "PLANETAR.EXE" reprezintă sistemul planetar, ţinând cont de legea atracţiei universale a lui KEPLER. Tastele săgeţi pentru deplasare în timp, iar cu tastele "*" şi "/" se măreşte/micşorează.

26-noiembrie-2012: Programul "BIORITM.EXE" desenează ciclurile bioritmului pentru o anumită perioadă. Ziua curentă, pentru care se face interpretarea, este prima din tabel; se poate modifica cu tastele săgeţi.



ALGORITMICĂ

PROBLEMA TĂIETURILOR: fiind o suprafaţă plană care conţine obiecte punctiforme, să se delimiteze în interiorul suprafeţei, dreptughiul care nu conţine puncte, cu aria cea mai mare. Am extins problema şi la volume paralelipipedice. În 3D poţi roti cu tastele săgeţi (doar 2 axe - suficient).

PROBLEMA PERECHILOR: fiind date două seturi de obiecte în plan (puncte), cu condiţia ca oricare trei să nu fie coliniare, să se unească câte un punct din primul set cu unul din al doilea, fără să existe linii care se intersectează.

DETAŞAREA UNEI ARII DINTR-UN ÎNTREG: Aceasta este o problemă cu care m-am lovit în cadastru şi topografie, la firma unde am lucrat. Foarte interesantă este problema când suprafeţele dorite trebuie să aibe laturile (două) paralele cu o direcţie anume. Programul este funcţional în AutoLISP; varianta pascal a fost făcută doar pentru testare. Se defineşte întâi poligonul, apoi cele 2 puncte ale direcţiei de detaşat, iar în final se specifică punctul de unde începe detaşarea şi valoarea ariilor parcelelor.

GĂSIREA INTERSECŢIEI PRIN ALGORITMUL SFEREI DE RAZĂ VARIABILĂ: Algoritmul este folosit pentru depistarea intersecţiei dintre un cerc (sferă) şi un contur poligonal. Bila se mişcă cu tastele săgeţi, iar conturul poligonal se modifică cu mouse-ul.

14-martie-2013: Programele "TEVI.EXE" şi "TEVIGL.EXE" realizează "meandrele concretului" sub forma unei "extorsiuni a unui degajament" .... mai concret, desenează conducte într-un spaţiu închis fără ca să se întretaie. Cu şi fără OpenGL.

PROBLEMA SCĂRII ŞI CUTIEI: problema a apărut pentru prima dată în cartea lui Thomas Simpson în anul 1745. Deşi pare foarte simpla, rezolvarea ei nu este: se pune lângă un zid vertical, o cutie de dimensiuni cunoscute (a,b - cealaltă dimensiune nu contează). Se reazamă de colţul cutiei o scară a carei lungime este de asemenea cunoscută (c), până când aceasta atinge zidul. Care este înălţimea, pe zid până unde ajunge scara ? Aici este rezolvarea mea a acestei probleme: am căutat un triunghi dreptunghic de laturi cunoscute (p,q,t - triplet pitagoreic) care să fie asemenea cu triunghiul dreptunghic dat. Testarea, dacă soluţia este validă sau nu, o fac prin verificarea coliniarităţii celor trei puncte. Se foloseşte doar mouse-ul.



DESPRE GRAFURI

Problema comisului voiajor: un comis voiajor trebuie să treacă prin mai multe oraşe şi să se întoarcă în oraşul din care a plecat. Gaseşte traseul - ciclul hamiltonian - optim (minim).

27-august-2012: Programul "DIJKSTRA.EXE" găseşte drumul minim prin care se poate ajunge de la un vârf la altul într-un graf. Cu mouse stânga se alege punctul de plecare, iar cu mouse dreapta sosirea. Orice altă tastă în afară de ESC generează un nou graf.

8-aprilie-2013: Programele "MAZE.EXE" şi "LABIRINT.EXE" rezolvă problema generării de labirinturi, folosind algoritmul lui Prim. Al doilea propune operatorului să găsească singur drumul de ieşire din labirint. Pentru soluţie automată se apasă tasta ESC.



DIMENSIUNI FRACTALE

Cinci programe despre fractali. Primul propune explorarea lumii Mandelbrot folosind tastele săgeţi. Alegerea unei anumite zone se face cu tastele "/" şi "*" de pe pad-ul numeric. Al doilea propune construirea unor universuri fractale prin iteratie, având la dispoziţie 7 formule parametrizate. Al treilea program conţine un set de 8 fractali dinamici. Al patrulea program generează o familie de fractali, static, transformând ecranul monitorului într-o expoziţie de tablouri de artă modernă, putând fi folosit ca screensaver. Al cincilea desenează, prin iteraţii, o ramură înfrunzită.

Cu programul "MERI.EXE", initial aveam de gând să fac un joc de tipul quest. Pentru fundal trebuia să am un peisaj cât mai variat. Nu am mai terminat, dar copacul continuă să înflorească şi să facă fructe.

20 septembrie 2012: Programul "TRIS.EXE" deseneaza triunghiul lui SIERPINSKI, recursiv.

23 septembrie 2012: În programul "MERI2.EXE", pomişorii sunt animaţi (bătuţi de vânt). Cu tasta ENTER se schimbă modelul pomişorului. Tasta ESC iese.

19 noiembrie 2012: Programele "PERLIN.EXE" şi "PNOISE.EXE" creează texturi folosind tehnica creeată de Ken Perlin, care a creeat funcţia de generare a numerelor aleatorii "noise". În al doilea program se folosesc tastele 'a' şi 'z' pentru a modifica textura.

5 decembrie 2012: Programul "MENGER.EXE" desenează 'buretele lui Menger' care este o curba fractală. Reprezintă o extensie 3D a 'mulţimii lui Cantor' şi a 'covorului lui Sierpinski'.

20 ianuarie 2013: Programul "WOGGLE.EXE" desenează iterativ un set de 10 fractali care se formează prin 'înnodare'.



TRIANGULARE PLANĂ

Fiind dat un roi de puncte plane, să se unească toate aceste puncte prin triunghiuri, fără să se intersecteze unele cu altele. Algoritmul lui DELAUNAY este cel mai bun. Acest program este inima programului AutoLISP care trasează curbe de nivel, generează suprafaţa terenului şi calculează volume pentru topografie.

Programul "TRI_POLI.EXE" triangulează un poligon prin metoda EAR-CLIPPING. Foarte rapid.

Diagramele Voronoi ("VORONOI.EXE") sunt făcute cu scop statistic, pentru trasarea pe o hartă a limitelor administrative ale unui numar de "n" oraşe.

Înfăşurătoarea convexă ("CONVEX.EXE") a unui roi de puncte. Am folosit un algoritm propriu, care validează o latură de margine dacă toate punctele se află de aceeaşi parte a ei.

14 iulie 2012: Programul "MIN_DEL.EXE" studiază mai în amănunt ce se întamplă într-o triangulare Delaunay. Am adăugat interactivitate: butonul stâng de mouse adaugă puncte în reţea; butonul drept de mouse mută puncte existente în poziţii noi.



RAYCASTING

Raycasting-ul este o metodă folosită în jocuri de a transpune o hartă plană într-o lume 3D, prin baleierea razei vizuale pana ce întâlneşte un obstacol. Sunt mai multe metode. Eu am studiat doar 5 dintre ele (iar 4 vi le prezint şi vouă). Prima metodă: harta este o matrice în care fiecare element este un bloc paralelipipedic - cea mai rapidă, dar zidurile sunt doar ortogonale şi de aceeaşi înălţime. A doua metodă: harta este definită prin segmente liniare - mai puţin rapidă, zidurile au ce înclinare vrei iar înălţimea lor e fixa. A treia metodă: harta declarată are sectoare adiacente (poligoane) care se baleiaza separat. - mai puţin rapidă, zidurile au ce înclinare şi înălţime vrei. A patra metodă: harta e făcută din puncte care au şi înălţime (voxeli = volume pixel) - cea mai fidelă reprezentare dar şi cel mai lent algoritm.

31-august-2012: Programul "WALL.EXE" foloseşte metoda de ray-castig cu vectori. Nouă este posibilitatea de a modifica diversi parametrii cu tastele: q-a,w-s,e-d,r-f.

19-octombrie-2012: Programul "OBIECTE2.EXE" construieşte o lume din voxeli. Obiectele din această lume sunt dinamice: lifturi, valuri, etc. Deplasarea se face fie cu tastele săgeţi şi spaţiu, fie cu butoanele mouse-ului.

12-noiembrie-2012: Programul "BSP2.EXE" foloseşte cea mai bună metodă de reprezentare (a cincea): 'binary space partition' pentru randarea unei 'lumi' 3D, definită în fişierul 'castle.txt'. Se folosesc tastele săgeţi pentru deplasare (cam buggy :-( ), spaţiu pentru salt, 'm' pentru hartă, 'c' pentru testarea coliziunilor, 'l' pentru randare.

1-decembrie-2012: Programul "VOXFAST.EXE" un update al programului "PEVOXEL2.EXE", şi programul "RAYCASTV.EXE" care face randare folosind voxeli, la rezoluţii mari. Se folosesc săgeţile, spaţiu şi mouse-ul.

12-martie-2019: Programele "PORTAL.EXE" și "PORTALTEX.EXE" folosesc tehnica de randare pe sector folosită în jocuri ca DUKE NUKEM 3D. Ideea este că sectorul este un poligon convex ale cărui laturi pot fi ziduri sau... alte sectoare (portal). Asta face posibilă construirea unor spații neeuclidiene. În varianta simplă sau cu texturi.



REGRESII MATEMATICE ŞI INTERPOLĂRI

Primul program găseşte cercul care este cel mai aproapiat de punctele date. Al doilea program permite alegerea tipului funcţiei şi numărul de puncte din care se calculează parametrii. Regresia matematică găseşte parametrii unei funcţii date pe baza unor valorilor experimentale cunoscute. Acest procedeu l-am folosit în programele de geodezie-topografie, inclusiv pentru transcalculul coordonatelor punctelor măsurate cu GPS-ul, de pe elipsoidul WGS '84 pe KRASOVSKI '42 - sistem de proiecţie STEREO 1970.

Programul "LAGRANGE.EXE" construieşte polinomul Lagrange pornind de la un set de puncte.

CURBE BEZIER ("BEZIER.EXE"): Programul permite editarea unei curbe bezier (închisă) pe baza căreia, în final, se poate trasa un traseu (util pentru un joc de maşini). Se foloseşte mouse-ul pentru crearea/deplasarea punctelor esenţiale ale curbei.

10-august-2012: Programul "CUBBEZ.EXE" editează o curbă BEZIER CUBICĂ. Pentru adăugarea de puncte noi curbei se apasă tasta SPACE. Butonul stâng de mouse mută punctele existente, iar butonul drept de mouse modifică marimea şi direcţia vectorilor suport.

22-august-2012: Am adăugat 3 programe ce studiază curbele BEZIER şi B-SPLINE. Se observă, în cazul curbelor Bezier că modificarea poziţiei unui punct influenţează o parte mai mare din curbă (la nivelul a 4 puncte de control) decât în cazul curbelor B-Spline - ceea ce căutam să evidenţiez :=).

1-noiembrie-2012: Programul "CERC3P.EXE" calculează un cerc definit prin trei puncte, şi verifică dacă un punct este interior sau exterior cercului.

2-noiembrie-2012: Cu "BSPLIN.EXE" poţi urmări deplasarea unui obiect (cerc) de-a-lungul unei curbe b-spline definită prin 10 puncte (modificabile cu mouse-ul).

3-ianuarie-2013: Programul "SPIRAL.EXE" deplasează o sferă de-alungul unei curbe 3D. Cu OpenGL.



GLOBUL PĂMÂNTESC

Programele proiectează pe o sferă (primul) sau pe un plan (al doilea) un set de puncte definite prin coordonatele lor. Setul de puncte nu l-am creeat eu. Globul poate fi rotit cu săgeţile şi marit cu tastele "a-z". Grafica devine uneori "buggy" datorită faptului că colorarea se face prin fill. Setul de puncte nu permite colorarea pornind de la poligoane.

3-ianuarie-2013: Programul "GLOBGLM.EXE" map-eaza pe o sfera, un bitmap (harta). Datorită modului de citire a pozei, aceasta a fost întâi prelucrată: am oglidit-o faţă de axa y, şi culorile sunt B,G,R. Desenul este făcut în OpenGL.



DIVERSE IZOMETRII

Grafică de rotaţie - Prin rotirea unui ansablu de linii plane în jurul unei axe conţinută în planul ansamblului, se obţine un corp de rotaţie. Creaţi-vă propriile voastre corpuri în joacă. Liniile trebuie să înceapă din zona gri şi să se închidă tot acolo, altfel nu este vorba de un corp, ci de o suprafaţă. Programul este interactiv şi foloseşte mouse-ul.

Program care testează rotaţiile 3D, proiecţia perspectivă în planul ecranului şi randare folosind ordonare dupa axa Z.

31-august-2012: Programul "WIRECUBE.EXE" roteşte în perspectivă un cub.

4-noiembrie-2012: Programul "ROTPCT.EXE" roteşte o reţea de puncte.

7-noiembrie-2012: Programul "3DTEST.EXE" foloseşte motorul pentru vizualizarea obiectelor 3D. Tastele sunt: săgetile,a-z,s-x,d-c,f-v.

24-noiembrie-2012: Programul "3DTESTMS.EXE" este un update al motorului pentru scene 3D. Tastele sunt: săgeţile,a-z şi mouse-ul.

25-noiembrie-2012: Programul "SFERAP.EXE" proiectează puncte pe o sferă, fără să facă şi calculul pentru perspectivă.

5-decembrie-2012: Programul "OPENGL.EXE" creează obiecte folosind OPENGL. Camera se mişcă cu săgeţile. Unghiul pentru perspectivă cu tastele 's'-'x'. Se scalează cu 'd'-'c'. Tasta 'm' comută din modul de vedere proiecţie perspectivă în proiecţie ortogonală. Tasta 'a' arată/ascunde axele sistemului de coordonate.

3-ianuarie-2013: Programul "TORGL.EXE" desenează cu OpenGL un tor, pe care 'întinde' un bitmap.

21-ianuarie-2013: Programul "DEMORUBI.EXE" desenează cubul lui Rubik 3D, iar programul "PIXTUN.EXE" desenează un tunel din pixeli.

5-februarie-2013: Programele "TUNEL1.EXE" şi "TUNEL2.EXE" - cu şi fără OpenGL şi mouse.

18-februarie-2013: Programul "PLIMB.EXE" testează mişcarea 'camerei' în OpenGL. Cu tastele Sageţi se deplasează caracterul, cu tasta spaţiu se trece de la modul de privire fix la unul mobil cu obiectul, iar cu mouse-ul se roteşte şi se apropie de obiect. Programul "HEART.EXE" desenează diverse suprafeţe (dreapta mouse) 3D.

16-martie-2013: Programul "3DVEC.EXE" pare acelaşi cu cel anterior. La o privire mai atentă se observă diferenţa: este realizat cu primitive grafice 3D (sfera, cilindrii şi conuri).

29-martie-2013: Programul "RAYT.EXE" desenează proiecţia în planul ecranului a unui corp tridimensional, folosind tehnica RAY-TRACING. Este o operaţie mare consumatoare de resurse, deoarece trebuie calculată poziţia şi culoarea fiecărui punct din planul ecranului. Corpul se schimbă cu click stânga şi se roteşte folosind mouse-ul.

30-iunie-2015: Programul "APPLE.EXE" omagiul meu firmei care mi-a făcut calculatorul, telefonul şi tableta.



GRAFICE

Graficele ale unor funcţii.

27-august-2012: Programul "TRIGO.EXE" studiază funcţiile trigonometrice sinus şi cosinus.

5-noiembrie-2012: Programul "CONWAY.EXE" recrează automatul celular propus de matematicianul John Horlan Conway, format dintr-o reţea de celule fiecare cu un număr finit de stări; stări influenţate de celulele vecine. Cu butonul stâng de mouse se iniţializează celulele, cu butonul drept sau tasta Spaţiu se trece la o noua generaţie de celule. ESC iese.



GEOMETRIE ANALITICĂ

Programe făcute pentru a testa intersecţiile între două segmente. Primul program calculează punctul de intersecţie ale dreptelor suport, punctul calculat putând fi şi în afara segmentelor. Al doilea program a fost folosit în cadrul programului de profile topografice. Reţine doar punctele mai apropiate de 20m de linia profilului.

Calculul poziţiei unui punct relativ la un poligon ("INTERIO1.EXE"): fie un punct şi un poligon. Este punctul în interiorul poligonului. Programul răspunde la aceasta întrebare. Am folosit foarte mult acest algoritm în programele de topografie.

Intersecţia a doua poligoane ("POLI_INT.EXE"): se specifică 2 poligoane care se intersectează. Se pune problema găsirii intersecţiei. Poligoanele trebuiesc date în sens trigonometric. Definitivarea introducerii unui poligon se face cu tasta "Enter". Dacă nu se respectă sensul trigonometric, se obţine reuniunea sau diferenţa celor doua poligoane. Algoritmul de intersecţie este dezvoltat de mine.

Cercul circumscris unui triunghi ("CIRCERC.EXE"): găseşte raza cercului circumscris unui triunghi.

9-august-2012: Programul "VECANG.EXE" calculează unghiul dintre doi vectori care pot fi rotiţi cu mouse-ul. Programul "LINEINT.EXE" verifică intersecţia dintre două segmente.

10-august-2012: Programul "VECPROD.EXE" reprezintă grafic semnificaţia produselor vectoriale a doi vectori cu aceeaşi origine. Se foloseşte mouse-ul: butonul stânga mută vârful vectorului cel mai apropiat, iar butonul dreapta mută originea vectorilor.

31-august-2012: Programul "LINE.EXE" exemplifică algoritmul lui BRESENHAM pentru trasarea unei linii.

20-septembrie-2012: Trei programe noi: "CMM_DIS.EXE" calculează cea mai mică distanţă dintre doua segmente de dreaptă. Cu mouse-ul se modifică punctele de capăt al segmentelor. "LINCERC.EXE" calculează punctul de intersecţie al unei raze cu un cerc. "VECNORM.EXE" desenează dreapta definită prin distanţa faţă de un centru şi normala la ea.

21-ianuarie-2013: Programul "SAT.EXE" calculează intersecţia a două poligoane prin metoda 'axei de separaţie'.



LOTO

Acest program te poate ajuta să joci cu spor la LOTO. Generează o schemă redusă pentru orice tip de sistem de joc şi oricâte numere. Generează în directorul curent fişierul "SCHEMA.TXT", care conţine desfăşurata dorită. Pentru "6 din 49", schema de 12 numere, cu câştig de 4 din 6 (adică: "la 6 numere care au fost extrase şi se regăsesc printre cele 12 jucate, se asigură cel puţin o variantă simplă în care să fie 4 numere câştigătoare"), are 10 variante simple (mult mai puţine decât echivalentul "oficial" pe care-l oferă Loteria Română prin schema de cod aferentă).

17-martie-2013: Programul "LOTODES.EXE" dă o 'faţă' noua celui precedent. Am îmbunătăţit calculul desfăşuratei minime din arborele total de combinări, rezultatul fiind desfăşurate mult mai mici pentru aceleaşi date de intrare faţă de cel precedent. Limita se păstrează de 30 de numere, din considerente de spatiu-timp.

22-martie-2013: Programul "CAPAJ.EXE" exemplifică funcţionalitatea 'Legii numerelor mari' din teoria probabilităţilor, în ceea ce priveşte rezultatul unui experiment repetat de multe ori. Aici, experimentul este aruncarea unei monede şi frecvenţa de apariţie a uneia dintre feţele monedei: cap sau pajură. Surprinzător (sau nu), la un număr mare de aruncări, probabilitatea de apariţie a celor două feţe se egalează.

27-martie-2013: Programul "CAPAJ49.EXE" verifică cum 'Legea numerelor mari' se aplică în cazul unui joc gen LOTO 6/49.



IMAGINI ASCUNSE

6-decembrie-2012: Programul "STEREO1.EXE" creează stereograma tridimensională a unei imagini. Obiectele 'implicate' în imagine sunt sortate după distanţa faţă de punctul de privire, apoi sunt create pentru fiecare obiect două poziţii, câte una pentru fiecare ochi. Pentru a vedea imaginea corect, priveşte spre ecran relaxat, ca şi cum ai privi într-o oglindă: punctul de convergenţă a razelor privirii trebuie să se formeze în spatele ecranului. Deci nu trebuie să focusezi direct pe ecran, iar ochii trebuie să stea relaxaţi. Eu am reuşit să vad stereografic după o jumatate de oră, după ce mi-a picat în mână prima stereogramă. Oricum, pentru a veni în ajutorul novicilor, tasta 'a' comută din modul de privire stereografic, în cel normal.

21-decembrie-2012: Programul "STERE256.EXE" desenează stereografic un set de 7 funcţii matematice. Tastele folosite sunt: 'Enter' pentru funcţia următoare, 'Space' pentru a comuta din modul stereografic în modul normal şi tasta 'a' pentru a ascunde cele 2 puncte din partea de sus a ecranului. Aceste puncte vin în ajutorul novicilor prin faptul că atunci când se focalizează corect imaginea, în loc de două puncte trebuie să se vadă trei puncte (cel din mijloc clar).

22-decembrie-2012: Programul "STEGANOGRAFIE.EXE" ascunde într-un bitmap necomprimat (de preferat true color), un fişier cu date. Fişierul de date este integrat în poză, prin modificarea pozei, fără a creste dimensiunea BMP-ului original. Mai exact, componentele culorilor fiecărui pixel din poză au biţii cei mai puţin semnificativi înlocuiţi cu biţi din fişierul de date. Numărul de biţi care se modifică sunt între 1 şi 7. Astfel, poza finală diferă foarte puţin faţă de poza iniţială şi au aceeaşi dimensiune. Cu butoanele notate "i" se obţin informaţii despre necesarul de memorie. Spre exemplu, am inclus în arhivă şi o poză criptată cu 4 biti, în care am inclus date. Decriptaţi să vedeţi ce anume.



FIŞIERE CU GRAFICĂ

Programul afişează un DXF (mai exact fişierul DXF.DXF) ca şi cum ar fi fost desenat de mână.

17-august-2012: Două programe pentru vizualizarea fişierelor vectoriale md2 cadru cu cadru. Cu tastele săgeţi se roteşte spaţial obiectul, cu Space se apropie, iar cu Enter se schimbă cadrul. Programul "VAD-JPEG.EXE" nu este spectaculos, însă algoritmul de decodificare a JPEG-ului este în varianta proprie, precum şi cel al 'răsfoirii' discului în vederea alegerii pozei. În cazul fişierelor cu tablouri luate de pe site-ul Web Gallery of Art poţi folosi tasta Space pentru a vizualiza detaliile despre tablou.

22-decembrie-2012: Programul "VIZUALIZATOR.EXE" ştie să deschidă multe formate grafice şi să răsfoiască toate discurile şi directoarele sistemului.

8-ianuarie-2013: Programul "VEDEJPEG.EXE" este un update care are posibilitatea de a alege fişierul cu casetă de dialog. Cu tasta Space se văd comentariile, iar cu Enter se deschide altă poză. Programul "MD2AGLU.EXE" animează fişiere MD2. Secvenţierea trecerii de la un cadru la altul se face prin interpolare liniară. Tastele F1-F2 se depărtează/apropie de modelul 3D. Săgeţile rotesc.



COMPENSAREA MĂSURĂTORILOR INDIRECTE

Programul execută compensarea 2D+1D a măsurătorilor topografice. Fişierele de intrare sunt: fişierul de măsurători, care este de tip TOPCON (vezi exemplul din arhivă) şi fişierul de reperi, fişier text cu coordonate NEZ. Metoda de compensare respectă paşii din cartea lui CONSTANTIN MOLDOVEANU - GEODEZIE. Totuşi, rezultatele diferă faţă de programele la care mă raportez: GeoTools şi Toposys. Dacă găseşte cineva unde anume (dacă) este vre-o eroare să mă anunţe să corectez. Pentru a veni în ajutorul debug-erilor, programul scoate în directorul de lucru toate matricile despre care se discută în cartea sus menţionată (best seller !).


FIZICĂ


FIZICA CORPURILOR RIGIDE

Aceste programe sunt rezultatul studiului capitolului MECANICĂ din fizică. Corpurile au un "comportament impulsiv" la ciocnire. Deci, bazat pe impuls. Pentru simplificare am considerat coeficientul de frecare unic, la suprafaţa întregului corp (nu aplicată punctiform, în punctul de contact), frecarea având loc inclusiv cu aerul. Momentul de inerţie este calculat în funcţie de punctul de impact, destul de exact. Masa corpurilor este calculată în funcţie de mărimea corpului; corpurile fixe au o masă foarte mare. Tasta Enter:schimbă scena. Cu mouse-ul se mişcă corpurile. Programul "IMPACT.EXE" nu ia în considerare diminuarea vitezei la impactul corpurilor şi are funcţionalităţi sporite. Taste: "a":adaugă un corp nou; "g":elimină/consideră acceleraţia gravitaţională; "f":modifică forţa de frecare.

Cu ajutorul programului "POOLBALL.EXE" am studiat ciocnirile între bile, pe masa de biliard. Bilele au doar impuls, momentele de inerţie lipsesc deocamdată.

17-august-2012: Programul "PARBAL.EXE" verifică coliziunile dintre particule şi corpuri rotunde. Se foloseşte mouse-ul pentru a creea o nouă particulă.

3-octombrie-2012: Programul "FIZBILE.EXE" lasă în cădere liberă obiecte rotunde. Cu tasta Spaţiu se adaugă noi obiecte.

12-octombrie-2012: Programul "BILETEST.EXE" îţi permite să controlezi cu tastele săgeţi o bilă într-un mediu asemănător unei table de biliard. Sunt afişate normalele la suprafeţele de contact şi direcţia/viteza de deplasare a bilelor.

29-octombrie-2012: Programul "2BILE.EXE" te lasă să controlezi o bilă cu tastele săgeţi.

1-noiembrie-2012: Programul "PCT2LIN.EXE" verifică coliziunile dintre bile (create cu butonul stâng al mouse-ului) şi linii (trasate cu butonul drept al mouse-ului).

8-noiembrie-2012: Programul "PRAF.EXE" a fost făcut tot pentru testarea coliziunilor între bile.

17-noiembrie-2012: Cu programul "OBLICA.EXE" am vrut să-i arăt lui Mihaita că mărul nu i-a căzut degeaba în cap lui Isaac Newton, şi cât de uşor este să simulezi procese din natură, dacă cunoşti legile de mişcare... Aici este aruncarea pe oblică. Se foloseşte mouse-ul pentru stabilirea poziţiei de început, apoi a unghiului şi a vitezei (mărimea vectorului este proporţională cu viteza).

28-noiembrie-2012: Programul "BOX3D.EXE" extinde în trei dimensiuni problema comportamentului 'impulsiv' în cazul ciocnirilor corpurilor. Este vorba doar despre cuburi. Se folosesc tastele săgeţi, şi 'a'-'z' pentru deplasare. Mouse stânga pentru orientare. Mouse dreapta pentru lansare proiectil.

17-decembrie-2012: Programul "BOX3DGL.EXE" desenează cu OpenGL programul precedent. Se folosesc aproximativ aceleaşi taste (săgeţi, a-z, s-x) şi mouse-ul.

27-decembrie-2012: Programele "BILE3D.EXE" şi "BILE3DGL.EXE" calculează coliziunile între bile în spaţiul tridimensional. Se foloseşte mouse-ul pentru rotaţie (dreapta) şi pentru generarea unei noi bile (stânga), şi tastele săgeţi, a-z şi i-j-k-l (pentru devierea direcţiei ultimei bile create). Cu tasta Space se pune pauză, iar cu Enter se desenează direcţiile de deplasare şi normalele suprafeţelor plane. Al doilea program are desenul făcut cu OpenGL.

3-ianuarie-2013: Programele "POOL2D.EXE" şi "POOL3D.EXE" ciocneşte bile de diverse mărimi în 2D şi 3D (cu OpenGL).

20-ianuarie-2013: Programul "CERC-MIN.EXE" este un simulator de fizică, care permite şi construirea de pendule. Tastele sunt: Space (aruncă un nou corp), Enter (trece la o nouă scenă), p,a,d,c,i (schimbă parametrii), r (reiniţializează scena) şi săgeţile (zoom-ul). Frecarea este calculată, corect, în punctul de contact al corpurilor, iar fiecare corp poate avea coeficient de frecare diferit. în arhivă mai este şi programul "MCERCMIN.EXE" în care se poate folosi mouse-ul pentru mutatul obiectelor. Însă este instabil la calculul interacţiunilor dintre poligoane şi cercuri. (?)

1-februarie-2013: Am adaugat noi 'scene' în "BILE3DGL.EXE".

4-februarie-2013: Programele "RELIEF.EXE" şi "RELIEFGL.EXE" deplasează bile pe un teren variat. Fără şi cu OpenGL.

8-aprilie-2013: Programul "3DREF.EXE" aduce în spaţiul tridimensional aruncarea pe oblică.



FIZICA CORPURILOR ELASTICE

Pentru că în realitate majoritatea corpurilor sunt deformabile, am studiat altfel problema reprezentării realiste a unui corp. Pentru început, am considerat, la suprafaţa corpului, un set de puncte materiale (cu masă). Aceste puncte sunt legate unele de altele prin legături elastice. Tasta space: -în primul program: întăreşte/slăbeşte legăturile dintre puncte; -în al doilea program consideră şi ciocnirea punct material-legătură (corpurile nu pot fi penetrate de alte corpuri). Cu enter se generează un nou corp.

Programul meu preferat rămane "PAREDM.EXE". Permite crearea de puncte materiale fixe sau mobile (tasta "space") şi de legături între ele. Unele puncte pot fi rotorul unui motor (tasta "r") şi rotirea poate fi în orice sens (tasta "i"). Pentru a nu lua în calcul ciocnirea cu un anume punct acesta poate fi făcut "invizibil" (tasta "t"). Punctele se pot şterge cu tasta "Del". Tasta "p": pune pauză. 29-decembrie-2012 am adăugat funcţionalităţi noi: posibilitatea de unire a două puncte, crearea segmentelor de lungime dorită, salvare şi incărcare în/din fişierul "FIZICA.TXT" şi, bineînţeles F1 pentru help.

13-iulie-2012: Am adăugat încă două programe, care studiază mecanica fluidelor. Fluidul este compus din particule; noutatea constând în adăugarea noţiunilor de "densitate" şi "presiune specifică". Fluidele se pot manevra cu mouse-ul: în programul "mercur.exe": butonul stânga "atrage" particule de fluid, butonul dreapta "respinge" particulele pe o rază dată; Tasta Space adaugă particule de lichid. În programul "fluid.exe" butonul stânga "atrage"; butonul dreapta stabileşte care latură a ecranului atrage particulele (pământ,cer,cascadă).

13-iulie-2012: Programul "COARDA.EXE" studiază funcţionarea legăturilor elastice dintre corpuri rigide.

23-iulie-2012: Programul "MERVIS.EXE" este un derivat al programului "MERCUR.EXE", având în plus calculul în ceea ce priveste "vâscozitatea".

4-august-2012: Programul "LEGATURI.EXE" studiază problema legaturilor elastice 'tensionate' dintr-o reţea. Cu butonul stânga de mouse se creează noi legături, iar cu cel din dreapta se mută reţeaua de legături. Atunci când tensiunea dintr-o legătură depăşeşte o valoare limită (10), legătura se rupe. Valoarea tensiunii este pozitivă dacă legatura se 'strânge' şi negativă dacă se 'întinde'. Cu tasta Spaţiu se consideră sistemul aflat în câmp gravitaţional sau nu. Cu tasta ESC se iese.

9-august-2012: Programul "VERLET.EXE" verifică interacţiunile dintre corpuri (fie că sunt 'moi', fie ca sunt 'rigide'). Se folosesc tastele săgeţi pentru a controla unul dintre corpurile 'moi' sau mouse-ul. Cu tasta ESC se iese.

20-septembrie-2012: Programul "ELASTIC.EXE" desenează o coardă elastică grea, prinsă la un capat.

3-octombrie-2012: Programul "SPRINGS.EXE" consideră două corpuri creeate cu arcuri. Constanta elastică a arcurilor se modifică cu butonul dreapta al mouse-ului.

31-octombrie-2012: Programul "NISIP.EXE" explică ce se intâmplă între grăunţele de nisip (legături instabile).

7-noiembrie-2012: Programul "EXPLOZIE.EXE" simulează comportamentul particulelor implicate într-o explozie violentă (foc de artificii).

19-noiembrie-2012: Programul "FIERBERE.EXE" mişcă particule simulând ceea ce se întamplă cu oxigenul creeat în procesul de fierbere al apei. De fapt mişcarea este făcută prin tehnica "parallax scolling".

28-noiembrie-2012: Programul "FIZ_PAR3.EXE" reprezintă un ansamblu 3D de particule materiale legate. Cu tasta 'spaţiu' se trage de unul dintre puncte, cu 'enter' se generează alt model. Programul "FIZPAR3D.EXE" extinde programul precedent la spaţiul tridimensional, cu motorul propriu.

1-decembrie-2012: Programul "VALTRI.EXE" încearcă să simuleze mişcarea valurilor. În trei dimensiuni. Wireframe.

15-decembrie-2012: Programul "VALTRIGL.EXE" este identic cu "VALTRI.EXE". OpenGL.

28-decembrie-2012: Programul "AGITATIE.EXE" arată ce se întâmplă atunci cand se tulbura apele liniştite.

30-decembrie-2012: Programul "HERTZ.EXE" simulează un pendul elastic. Traiectoria mişcării este calculată prin metoda clasică (EULER) sau prin integrare (RUNGE KUTTA) cu tasta Enter. Tasta Space aplică o forţă la capătul pendulului.

4-ianuarie-2013: Programul "POZAGIT.EXE" suprapune peste reţeaua de puncte legate elastic, o poza. Cu OpenGL. Tasta Space arată sau nu reţeaua de puncte.

8-ianuarie-2013: Programul "POZAGITJ.EXE" încarcă un fişier în formatul JPEG peste reţeaua de puncte.

26-ianuarie-2013: Programul "FLUID3D.EXE" simulează comportarea unui lichid în trei dimensiuni. Am modificat şi programul "MERVIS.EXE". Acum cu tasta 'a' se mai 'toarnă' lichid, cu Space se foloseşte la simulare calculul pentru vâscozitate sau nu, iar Enter elimină toate particulele de lichid.

27-ianuarie-2013: Programul "MERVISI.EXE" îmbunătăţeşte pe cel vechi prin adăugarea de obstacole în calea fluidului. Programul "FLUID3GL.EXE" desenează cu OpenGL scena 3D. Cu tasta Enter se reia simularea.

1-februarie-2013: Programul "VALURI3D.EXE" simulează mişcarea obiectelor plutitoare pe suprafaţa unui lac. Suprafaţa liniştită a lacului se 'tulbură' atunci când se apasă cu mouse-ul pe pătratul negru din colţul stânga-sus al ecranului.

7-februarie-2013: Programul "VULCAN.EXE" simuleaza mişcarea vâscoasă a lavei unui vulcan ce erupe. Se deplasează cu săgeţile şi mouse-ul. Cu controalele slide-urilor de pe ecran şi cu tasta Space se modifică parametrii.

16-martie-2013: Programele "MBALL2.EXE" şi "MBALL2C.EXE" deplasează pe traseul unei curbe Lissajous 4 bile care interacţionează unele cu celelalte prin intermediul unui câmp de forţă. Simularea este 2D, în alb-negru şi color.

18-martie-2013: Programele "MBALL3.EXE" şi "MBALL3GL.EXE" transpun în spatiul tridimensional problema anterioară. Cu şi fara OpenGL.



TABELUL PERIODIC AL LUI MENDELEEV

Acest program l-am făcut pentru a nu mai căuta prin tot felul de cărţi mase atomice specifice. şi dacă tot l-am făcut ce-ar fi să reprezint şi grafic, schiţat, atomul ?

21-august-2012: Am modificat integral programul, adăugându-i funcţionalităţi şi detalii noi, pentru a-l face fericit pe prietenul meu, George Feraru. Se foloseşte mouse-ul cu click stânga pentru primul ecran şi dreapta pentru ecranul al doilea. Orice tastă închide programul.



OPTICĂ

Studiul opticii. Fie o lupă groasă convexă şi o sursă de lumină. Se poate vedea ce se întamplă. Taste: 1-8:schimbă forma lentilei.

10-august-2012: Programul "OGLINDA.EXE" arată cum se reflectă razele luminoase într-o oglindă. Dacă se apasă butonul stâng de mouse, reflecţia se transformă în refracţie.

31-octombrie-2012: Programul "UMBRA.EXE" studiază razele de lumină care se lovesc de obstacole.

6-noiembrie-2012: Programul "LUPE2.EXE" modifică putin programul iniţial (păstreazţ doar razele luminoase care interacţionează cu lupa). Tipul lentilei se schimbă cu tasta Space: parabolic/elipsoidal/sferic.

7-noiembrie-2012: Programul "RAZA.EXE" 'aruncă' un fascicul de raze luminoase către diverse obiecte. Obiectele apar din intuneric pe masura ce sunt luminate.

9-noiembrie-2012: În programul "LANTERNA.EXE" pointer-ul de mouse se transformă într-o sursă luminoasă.



PROPAGAREA ECOULUI

Fie un emiţător de unde (acustice) şi un receptor; undele se pot reflecta de marginile ecranului (în cazul nostru). Să se reţină doar acele unde care ajung la receptor. Cu mouse-ul se alege poziţia emiţătorului (stânga) şi poziţia receptorului (dreapta).



MAGNETISM ŞI ELECTRICITATE

Primul program arată ce se întâmplă între cei doi poli ai unui magnet. Cu mouse-ul se alege poziţia polului nord (stânga) şi poziţia polului sud (dreapta).
Al doilea program rezolva problema distribuţiei câmpului magnetic între 15 poli magnetici răspânditi aleatoriu.

Programul "BINPLAN.EXE" arată cum funcţionează legile lui Kepler în cazul unui sistem solar binar. Foarte interesant ce se intâmplă când o planetă devine captivă unuia dintre sori.

5-august-2012: Programul "CAMPMAG.EXE" foloseşte 'Legea lui Coulomb' pentru a modifica câmpul magnetic care se creează în jurul a 10 poli. Cu mouse-ul se modifică interactiv poziţia polilor magnetici.

12-august-2012: Programul "TRUPE.EXE" rezolvă problema deplasării trupelor armate pe un teren cu obstacole în vederea încolonării la locul de sosire. Practic, particulele selectate sunt încărcate cu enegie potenţială, şi ele încep să alunece către atractorul definit. Cu butonul stâng de mouse se selectează 'soldaţii' (particulele), iar cu butonul drept se alege locul unde se face careul (atractorul). Algoritmul ar putea fi util într-un joc de strategie.

31-octombrie-2012: Programul "ATRACTOR.EXE" transformă mouse-ul într-un magnet (polaritatea se schimbă din butoanele mouse-ului).

1-noiembrie-2012: Programul "COPOI.EXE" transformă mouse-ul într-o ţintă pentru rachete. Cu butonul stânga de mouse se lansează o noua rachetă.

7-noiembrie-2012: Programul "GRAVSIM.EXE" simulează câmpul gravitaţional creeat în jurul unei stele, în timp ce programul "GAURA.EXE" duce la extrem simularea, în ipoteza unei 'găuri negre'.

19-noiembrie-2012: Programul "GALAXIE.EXE" încearcă să vizualizeze ceea ce se întamplă la scară macro, într-o galaxie în care punctul central are forţa de atracţie variabilă.

22-noiembrie-2012: Programul "MAG3D.EXE" desenează câmpul magnetic creat în jurul a 8 poli magnetici amplasaţi aleatoriu într-un spaţiu 3D. Deplasarea se face cu tastele 'a','z', săgeţi şi mouse-ul.

29-noiembrie-2012: Programul "POTENT.EXE" găseşte calea cea mai scurtă pe care un corp atras o parcurge până la atractor. Similar, calea pe care un corp încărcat cu energie potenţială o parcurge atunci cand este lăsat să coboare o pantă liber. În faţa corpului atras pot fi obstacole, pe care, dacă poate, le ocoleşte. Cu tasta 'a' se alege poziţia atractorului. Cu butonul stânga de mouse se adaugă obstacole, cu butonul dreapta se creează noi corpuri.

2-februarie-2013: Programul "MAG3DGL.EXE" desenează cu OpenGL câmpul magnetic. Merge parcă mai bine cu OpenGL.

5-martie-2013: Programele "FULGER.EXE" şi "FULGERGL.EXE" desenează ceea ce se întâmplă între doi poli încărcaţi electric.



EXCAVATORUL CU LINGURĂ INTOARSĂ ŞI ALTE UTILAJE

Unele dintre cele mai vechi programe, făcute pe cand eram student la MUC (Maşini şi Utilaje de Construcţii). Pistoanele se mişcă cu tastele o-p, k-l, n-m. În rest, vezi help-ul (tasta F1).

9-august-2012: Programul "AMOTO.EXE" simulează funcţionarea aproximativă unui motor cu ardere internă. Programul "ARM.EXE" mişcă cu mouse-ul un braţ articulat. Cu ESC se iese.

20-septembrie-2012: Programul "DINTAT.EXE" arată cum funcţionează un angrenaj dintat. Numărul de dinţi ai roţilor se modifică cu tastele 'a' şi 'z'.

19-noiembrie-2012: Programul "LOCOMOT.EXE" arată cum un piston poate genera mişcare circulară.



FIZICĂ PE 4 ROţI

În primul program vezi cum acţionează legile mecanicii atunci când corpul este o maşină, iar frecarea se produce între suprafaţa de sprijin şi cele 4 roţi. Asta ne arată centrul de masă al ansamblului. Taste: săgeţi:mişcare; z-a:scalare. În al doilea program trebuie să conduci un tir cu remorcă şi să te deplasezi fără a lovi ceilalţi participanţi la traficul rutier. Taste: Enter adaugă/scoate remorca; Space: schimbă direcţia de mişcare; Tastele săgeţi deplasează.

31-august-2012: Programul "MASINA.EXE" arată cum se comportă o maşină în diferite condiţii de trafic (poţi modifica coeficientul de frecare, masa automobilului precum şi mărimea roţilor). Cu tastele săgeţi deplasezi maşina. Tasta Space pune frână. Tasta Enter schimbă tipul de tracţiune: 4x4, faţă sau spate. De remarcat controalele tip "slide" de pe ecran.

22-octombrie-2012: Programul "ZBOR2.EXE" te invită să te descurci cu mouse-ul din dotare, în ipoteza unui zbor planat.

20-martie-2013: Programul "STRADA.EXE" îţi permite să deplasezi maşina printr-un peisaj variat. Viteza se modifică prin mişcarea mouse-ului. Peisajul nu este static: dacă se opreşte, începe să "bată" vântul şi ...



CEAS MECANIC

Un ceas mecanic care bate ora exactă.



FOC

"Arde... uite cum arde..." (Paraziţii). Pentru atunci când ecranul monitorului devine prea monoton. Acest efect urma să fie folosit intr-un joc. N-a mai fost cazul.



NINSORI

Primul program rulează doar în rezolutia 320x200, însă este cea mai reuşită simulare.



EFECTE GRAFICE

Un set 8 diverse efecte grafice animate.



ADN

O încercare de simulare a spiralelor ADN-ului.