ძირითადი მასალა
კომპიუტერული პროგრამირება
კურსი: კომპიუტერული პროგრამირება > თემა 4
გაკვეთილი 6: გარდაქმნებიმრავალი გარდაქმნა
ახლა, როცა უკვე ნანახი გაქვთ გადატანის, მობრუნებისა და ზომის შეცვლის საწყისები, ვილაპარაკოთ მათ ერთად გამოყენებაზე და იმ სირთულეებზე, რომლებსაც დასაწყისში გადავაწყდით.
თანმიმდევრობა მნიშვნელოვანია
როდესაც რამდენიმე გარდაქმნას აკეთებთ, მათი თანმიმდევრობა მნიშვნელოვანია. მობრუნება, შემდეგ გადატანა, შემდეგ ზომის შეცვლა არ მოგვცემს იგივე შედეგს, რასაც გადატანა, შემდეგ მობრუნება, შემდეგ ზომის შეცვლა. აი, პროგრამის მაგალითი, რომელიც ამის დემონსტრირებას აკეთებს:
მიმდევრობა უნდა აირჩიოთ თქვენთვის სასურველი შედეგის მიხედვით. უბრალოდ გახსოვდეთ, რომ თქვენ გადააადგილებთ უჯრედებიან ფურცელს და არა - თვითონ ობიექტს. უნდა იპოვოთ ის მიმდევრობა, რომელიც სწორად იმუშავებს.
გარდაქმნის მატრიცა
ყოველთვის, როცა აკეთებთ მობრუნებას, გადატანას ან სკალირებას (მასშტაბირებას), გარდაქმნისთვის საჭირო ინფორმაცია გროვდება რიცხვების ცხრილში. ამ ცხრილს (იგივე მატრიცას) აქვს მხოლოდ რამდენიმე მწკრივი და სვეტი, თუმცა, მათემატიკის ჯადოქრობის გამო, ის შეიცავს ტრანსფორმაციების ნებისმიერი მიმდევრობის გაკეთებისთვის საჭირო ინფორმაციას. სწორედ ამიტომ შეიცავენ
pushMatrix()
და popMatrix()
სიტყვა „მატრიცას" (ინგლ. Matrix).სახელების „push" და „pop" ნაწილები საიდან მოვიდა? ისინი მოდიან კომპიუტერული კონცეფციიდან, რომელიც ცნობილია, როგორც „სტეკი“ (stack). სტეკში ბოლოს დამატებული ელემენტი მასში უკვე არსებულ ელემენტებს ზემოდან ემატება, ხოლო მისგან ელემენტის მიღებისას ვიღებთ ყველაზე ზემოთ მყოფ ელემენტს (ანუ ბოლოს დამატებულს), მის წინ დამატებული ელემენტი კი ხდება სტეკის ზედა ელემენტი.
მსგავსად ამისა, საკოორდინატო სისტემის მიმდინარე სტატუსს
pushMatrix()
დებს გამოყოფილი მეხსიერების ზედა (უმაღლეს) ნაწილში, ხოლო popMatrix()
-ს უკან ამოაქვს ის. წინა მაგალითი იყენებდა pushMatrix()
-სა და popMatrix()
-ს იმაში დასარწმუნებლად, რომ საკოორდინატო სისტემა იყო „სუფთა“ ნახატის თითოეულ ნაწილამდე. ყველა დანარჩენ მაგალითში ამ ორი ფუნქციის გამოძახებები არ იყო საჭირო, რადგან არ იყო არცერთი მომდევნო გარდაქმნა, მაგრამ ბადის სტატუსის დამახსოვრებითა და აღდგენით არაფერი შავდება. გასავარჯიშებლად, ყოველთვის გამოიყენეთ ეს ფუნქციები, როცა გარდაქმნებს აკეთებთ.ასევე არსებობს
resetMatrix()
ფუნქცია, რომელიც ხელახლა აყენებს მატრიცას მის თავდაპირველ მდგომარეობაში („ერთეულოვანი მატრიცა"), მაგრამ push და pop ფუნქციების გამოყენება თითქმის ყოველთვის უკეთესი მიდგომაა.გინდათ, მეტი ისწავლოთ ან მიმოიხილოთ ალგებრაში მატრიცების შესახებ? შეგიძლიათ, გადახედოთ მატრიცებს ხანის აკადემიაზე, კონკრეტულად სექციას გეომეტრიული გარდაქმნები მატრიცებით.
ეს სტატია არის დევიდ აიზენბერგის 2-განზომილებიანი გარდაქმნების ადაპტაცია, რომელიც გამოყენებულია Creative Commons Attribution-NonCommercial-ShareAlike ლიცენზიით.
გსურთ, შეუერთდეთ დისკუსიას?
პოსტები ჯერ არ არის.