Da, mergem de la tema delphi și parserii de azi. Doar puțin despre zilnic.
De ce un astfel de post? Aici, de exemplu, a existat un motor pro 3d pe delphi. care este foarte condiționată poate fi numită asta. Doar recalcularea coordonatelor, și chiar și atunci nu cea mai bună cale. Acum vom face mai deștept, dar vom face totul în matkadah. Și ce? De asemenea, programarea.
În primul rând, despre cum să desenați segmente pe o diagramă în MathCAD: trebuie să creați doi vectori de aceeași mărime care să conțină coordonatele punctelor, respectiv X și respectiv Y. Iar aceste puncte, matkadul se va conecta prin segmente dacă acești vectori sunt indicați în grafic. exemplu:
Acum, imaginați-vă că acesta este cazul: avem două sisteme de referință în trei dimensiuni: primul merge mai departe, vom trece de-al doilea (. Vezi mai jos), este, de asemenea, cubul nostru.
Setați coordonatele punctelor cubului:
Acum este aproape noapte, și nimic mai inteligent decât această funcție a apărut :) Poate fi mai simplu, am făcut-o deja, dar fișierul a rămas pe un alt computer. Da și bine. Avem opt puncte:
Am aruncat o privire curată, în dosarul final nu ar trebui să fie așa. Acum, cum să conectați aceste puncte, astfel încât toate marginile cubului să fie vizibile (se repetă mai multe segmente - este imposibil de ținut "curat"):
Înțelegi? Ei bine, să revenim la acest ordin mai târziu, când vom scoate complet cubul rotit. După cum vă amintiți, aceste puncte sunt în sistem, care este rotit față de cel principal. Cum se transformă? Da, desigur, trei colțuri! Să presupunem că știm toate cele trei unghiuri, dar cum putem recalcula coordonatele punctelor? Este simplu: folosiți matricea de rotație. Trei matrici: rotiți pe un unghi de-a lungul axei X, de-a lungul axei Y și de-a lungul axei Z, aici:
Mai multe despre matricea de rotație citit în Wikipedia, în principiu, totul este pur și simplu de ieșire. În ultima linie din figura de mai sus funcția care va da vectorul de radius al punctului dorit, este suficient să setați numărul și trei colțuri.
În spațiul tridimensional, au fost obținute punctele, cum vom deduce? Una dintre proiecții, de exemplu, pe planul 0xy, este suficientă. Acum este momentul să specificăm două vectori, unde în ordinea care este pictată cu creionul meu într-una din imaginile de mai sus, coordonatele x și y ale punctelor vor fi:
Optimizați codul, dacă există o dorință, acum sunt leneș. Și este ceva de optimizat. Ce altceva avem nevoie pentru animație: variabila FRAME. Fără animație, este zero. În timpul animației, numărul cadrului. Vom avea de la 1 la 100. Să stabilim legile pentru schimbarea unghiurilor pentru animație:
Au dat funcții aleatorii (citiți la întâmplare, poate că se vor dovedi frumos). Construim!
Nu este încă foarte convingător? Începem animația: