Delfistyaosani3D პროგრამას აკეთებ ხო??

მაგრა გაიჭედები, როცა გექნება დასადგენი ორ გადამკვეთ ფიგურას შორის რომლის რომელი ნაწილი გამოჩნდეს და რომელი არა.
(ანუ ფიგურები როცა გექნება დასამსხვრევი)
ასე გაწვალდები ალბათ, მაგრამ:
1)შექმენი შენი სიბრტყე, რომელზეც აგეგმილებ. ანუ აიღე ახალი X Y Z სისტემა სადაც მაგალითად XY სიბრტყე იქნება ეკრანი. ისე რო ამ ორი სისტემის ცენტრები ემთხვეოდეს
2)მერე კოორდინატთა სისტემის ცვლილების ფორმულა გამოიყენე XYZ ახალი სისტემა xrz ძველი
X =l1x+l2y+l3z
Y=m1x+m2y+m3z
Z=n1x+n2y+n3z
სადაც l1,l2,l3....n2,n3 არის კოორდინატთა ძველ და ახალ ღერძებს შორის კუთხეების კოსინუსები. დაახლოვებით ასე:
l1=cos(X^x) l2=cos(X^y) l3=cos(X^z) .......n2=cos(Z^y) n3=cos(Z^z)
შენ მკითხავ კოსინუსები სად ჯანდაბიდან გავიგოო. გააკეთე ასე: თავიდან ეკრანის კოორდინატთა სისტემა აიღე მთავარის იდენტური. ანუ ისე რო ეკრანის და "სამყაროს" (ის განზომილება რასაც 3D მაქსში world ქვია. ანუ მთავარი კოორდინატთა სისტემა) ღერძებს შორის კუთხეები 0 ები იყოს ანუ ძველი და ახალი ღერძები ემთხვეოდეს.
მერე კი ეკრანის კოორდინატთა სისტემა როგორც გინდა ისე დაატრიალე. და დატრიალების კუთხეების ცვლილების მიხედვით კოსინუსები გამოიყვანე (ცოტა ჩალიჩი მოგიწევს მაგ ფორმულების გამოსაყვანად)
3)ეკრანის დატრიალებას მაგით გააკეთებ. მოძრაობისას კი უბრალოდ ეკრანის კოორდინატები შეცვალე. ანუ თუ XY (ეკრანს) X ის მიმართ გაწევ 5 ი თ ყველა X-ს დააკლებ 5 ს . ანუ თუ ეკრანზე რაღაც წერტილის X იყო 15. ეკრანის მარჯვნივ 5 ით გაწევისას წერტილის X გახდება15-5 ანუ 10. და ასე Y სთვისაც
4) შედეგად მიიღებ ერთი სისტემის გეგმილებს მეორე სისტემის სიბრტყეებზე. მაგალითად XY-ზე გეგმილებს შეგიძლია დაარქვა ზედა ხედი, XZ-ს წინა YZ-ს გვერდითა და ა.შ
თუ სამი ეკრანი არ მოგწონს და მაინცდამაინც 1 გინდა უბრალოდ Z ი არ გამოიყენო ან წაშალე.
5) მერე კი 4 ივე წერტიების დაგეგმილების შემდეგ გამოიყენე წრფეების გადაგვეთის ფორმულა სიბრტყეზე. ანუ ამოხსენი სისტემა მიღებული ორი წრფისთვის (4 წერტილისთვის) და მიიღებ გადაკვეთის კოორდინატებს მოცემულ სიბრტყეზე.
ეს ხო კარგი, შედარებით ადვილია, მაგრამ:
აი ერთმანეთის უკან მდგომი და გადამკვეთი ფიგურების ჩვენება კი ღმერთმა ნუ დაგაჭირვოს
This post has been edited by child_of_xobisckali on 27 Mar 2008, 21:22