بسم الله الرحمن الرحیم
با سلام
هر کدام از کدهای زیر چه کار می کنند؟
ماتریس های vertex_matrix وfaces_matrix چه چیزی از مکعب را تعریف می کنن؟
و نهایتا تابع patch چه می کند؟
vertex_matrix ماتریس رئوس بوده که هر سطر آن معرف یک نقطه است. ستون اول این ماتریس شامل مولفه ی x، ستون دوم مربوط به مولفه ی y و ستون سوم مربوط به مختصه ی z در فضای کارتزین سه بعدی است.
faces_matrix ماتریس وجوه بوده که هر سطر آن معرف یک وجه است. هر ستون این ماتریس بیان گر یکی از رئوس تشکیل دهنده ی آن وجه خواهد بود.
دستور patch جهت تشکیل یک حجم سه بعدی با ترکیبی از چند ضلعی ها است. ورودی های این تابع عبارت اند از:
ماتریس رئوس
ماتریس وجوه
ویژگی های رنگ
دستور view(3) جهت تعیین زوایه ی دید در فضای سه بعدی است.
دستور axis square نیز برای تساوی مقایس محور های مختصات به کار می رود.
موفق باشید
آرمین:11():
MahdiAlHoseini
01-05-15, 14:37
بسم الله الرحمن الرحیم
با سلام
چه جوری میشه این مکعب رو در فضا دوران داد؟
با سپاس فراوان:give_rose:
ravegoat
03-05-15, 22:38
با سلام!
رئوس مکعب را در ماتریس دوران ضرب نمایید. برای اطلاعات بیش تر:
The Mathematics of the 3D Rotation Matrix (Only the registered members can see the link)
شاد باشید
MahdiAlHoseini
05-05-15, 14:43
بسم الله الرحمن الرحیم
با سلام!
رئوس مکعب را در ماتریس دوران ضرب نمایید. برای اطلاعات بیش تر:
The Mathematics of the 3D Rotation Matrix (Only the registered members can see the link)
شاد باشید
با سلام
کاری که گفتید رو انجام دادم ولی متاسفانه فقط شکل چرخش پیدا کرد؛ در صورتی که می خوام در فضا دوران داشته باشه.(مکعب دوار)
با سپاس فراوان:11():
ravegoat
05-05-15, 21:02
بسم الله الرحمن الرحیم
با سلام
کاری که گفتید رو انجام دادم ولی متاسفانه فقط شکل چرخش پیدا کرد؛ در صورتی که می خوام در فضا دوران داشته باشه.(مکعب دوار)
با سپاس فراوان:11():
امکانش هست که منظورتون روشن تر بیان بفرمایید؟ آیا قصد نداشتید که شکل رو بچرخونید؟ اگر می خواهید مکعب ثابت باشه و شما به عنوان ناظر در اطراف مکعب بچرخید باید از دستور view استفاده کنید.
باز اگر منظورتون رو واضح تر بیان کنید، بنده هستم در خدمتتون...
MahdiAlHoseini
06-05-15, 10:28
بسم الله الرحمن الرحیم
با سلام
از پاسختون بینهایت سپاسگزارم؛ درست متوجه شدید می خوام بچرخه.
بنده با توجه به ماتریس دوران کد زیر رو نوشتم:
vertex_matrix = [0 0 01 0 0
1 1 0
0 1 0
0 0 1
1 0 1
1 1 1
0 1 1];
%faces_matrix = [1 2 6 5
%2 3 7 6
%3 4 8 7
%4 1 5 8
%1 2 3 4
%5 6 7 8];
Rotate_matrix=[sqrt(2)/2 sqrt(2)/2 0
-(sqrt(2)/2) sqrt(2)/2 0
0 0 1];
vertexRotate=vertex_matrix*Rotate_matrix;
patch('Vertices',vertexRotate,'Faces',faces_matrix ,...
'FaceVertexCData',hsv(8),'FaceColor','interp')
view(3); axis square
باید داخل حلقه for بذارم؛ و یا ...
لطفا اصول کار رو توضیح بدید بعد دوباره کد بزنم.
با سپاس فراوان
ravegoat
06-05-15, 23:27
با سلام!
خواهش می کنم دوست عزیز...
اگر قصد دارید دوربین رو حول مکعب دوران بدید می تونید از کد زیر استفاده کنید:
در کد بالا یک حلقه در نظر گرفته شده که درون آن تابع view (تابع تعیین جهت گیری دوربین) در مختصات کروی مقدار دهی میشه. البته این مقدار دهی می تونه در دستگاه مختصات کارتزین نیز صورت بگیره. در این مقدار دهی زاویه ی φ مقدار ثابت 30 درجه رو خواهد داشت و زاویه ی θ توسط شمارنده ی i از 0 تا 360 درجه تغییر می کنه. دستور getframe وظیفه ی عکس گرفتن از پنجره ی Figure رو بر عهده داره. به دلیل بار پردازشی این دستور، حلقه آهسته تر از حالتی اجرا میشه که دستور getframe درون حلقه وجود نداشته باشه. در نتیجه روند چرخش به شکل محسوس تری برای کاربر به نمایش در می آید.
لازم به ذکره اگر تصویر زمینه ای به عنوان مرجع در گرافیک وجود نداشته باشه، چرخش خالص مکعب و چرخش دوربین حول مکعب هر دو به یک شکل دیده خواهند شد.
شاد و موفق باشید
آرمین:11():
MahdiAlHoseini
07-05-15, 15:21
بسم الله الرحمن الرحیم
با سلام
می خوام اینکار رو با استفاده از ماتریس دوران بنویسم؛ کد زیر رو نوشتم ولی متاسفانه جواب نمی ده.