ورود

View Full Version : سوال: سه بعدی کردن شکلی که دوبعدی است



meisam12
دوشنبه 20 شهریور 1391, 12:56 عصر
سلام دوستان
این پروژه ای که نوشتم یک آدمک است که با دکمه های a,s,d,w جهتش عوض می شود ولی در فضای دوبعدی می باشد. چگونه می توانم به فضای سه بعدی تبدیل کنم ؟
با تشکر.

hadi0x7c7
دوشنبه 20 شهریور 1391, 14:21 عصر
واسه نوشتن اینجور برنامه ها منظورم برنامه شما و snake و این چیزی هایی که به صورت text هستش مربوط به چه قسمت C/C++ هستش ؟

Ananas
دوشنبه 20 شهریور 1391, 23:41 عصر
سلام بابا جان.

چگونه می توانم به فضای سه بعدی تبدیل کنم ؟
با استفاده از ماتریس ها. ماتریس ها برای دوران و تعیین موقعیت هر نقطه به کار میرن بعد شما اون نقطه رو روی صفحه دو بعدی نگاشت میکنید با استفاده از ماتریس دیگه ای.
در واقع اگر بخواید پرسپکتیو هم داشته باشه، به سه تا ماتریس نیاز دارید :
1 ماتریس خود شی
2 ماتریس دوربین
3 ماتریس پرسپکتیو
__________________________
اما یه راه ساده تر اینه که فرمول دقیق رو بیخیال بشی و هر نقطه که رنگ میکنی (نقاط لبه و بیرونی شی) به ازای اون در راستای 45 درجه دو تای دیگه هم کنارش رنگ کنی. ساده ترین حالتش فکر میکنم این باشه. یعنی بالا چپ، دوباره بالا چپ.

meisam12
پنج شنبه 23 شهریور 1391, 10:14 صبح
می شود یک تمرین بذارید و یا یک مثال بزنید.
با تشکر

سلام بابا جان.

با استفاده از ماتریس ها. ماتریس ها برای دوران و تعیین موقعیت هر نقطه به کار میرن بعد شما اون نقطه رو روی صفحه دو بعدی نگاشت میکنید با استفاده از ماتریس دیگه ای.
در واقع اگر بخواید پرسپکتیو هم داشته باشه، به سه تا ماتریس نیاز دارید :
1 ماتریس خود شی
2 ماتریس دوربین
3 ماتریس پرسپکتیو
__________________________
اما یه راه ساده تر اینه که فرمول دقیق رو بیخیال بشی و هر نقطه که رنگ میکنی (نقاط لبه و بیرونی شی) به ازای اون در راستای 45 درجه دو تای دیگه هم کنارش رنگ کنی. ساده ترین حالتش فکر میکنم این باشه. یعنی بالا چپ، دوباره بالا چپ.

Ananas
پنج شنبه 23 شهریور 1391, 13:57 عصر
یکمی ریاضیات لازم داره. قسمت ماتریس دوران و بزرگنمایی و انتقال (rotation scaling translate) مربوط به هندسه تحلیلی و ریاضیات سه بعدی میشه و با ضرب ماتریس ها تو هم انتقال ها و دوران ها و تغییر اندازه های پی در پی تو یک ماتریس جمع میشن و بعد نقاط شکلمون رو به شکل "بردار در ماتریس" ضرب میکنید. مثال هم یکمی طولانی میشه، باید دید دقیقا چی می خواید بنویسید روی همون کار کنید.
اگر از D3DX.h استفاده کنید توابع لازم برای کار با ماتریس ها و بردارها رو داره. به نظرم توابعش برای عملیات ریاضی خیلی کامله نیاز به تعریف فرمول ریاضی ندارید. فقط باید بدونید چطور ازشون استفاده کنید (یکمی هندسه).
D3DXMatrixMultiply
D3DXMatrixRotationX
D3DXMatrixRotationY
D3DXMatrixRotationZ
D3DXVec3TransformCoord
D3DXVec3Add
D3DXVec3Cross
...
...
...
حتما لازم نیست که از DirectX برای نمایش استفاده کنید میتونید فقط از توابع ریاضی ای ماتریس و بردارش استفاده کنید و خودتون با consol (توصیه نمیکنم) یا GDI ویندوز (توصیه میکنم) و یا اصلا خود Direct3D و OpenGL (این دو تا یکمی سختن ولی شدیدا توصیه میکنم) نمایش رو انجام بدید.
__________________________
http://www.forum.khoramsoft.com/
قسمت OpenGL و DirectX اش آموزش داره.
..............................
http://barnamenevis.org/showthread.php?337470-%D8%B3%D8%B1%D8%B9%D8%AA-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1-c-builder-%DB%8C%D8%A7-visual-c-%D8%9F%D8%9F%D8%9F&p=1508181&viewfull=1#post1508181
نمونه ی قوری در حال چرخش
..............................
http://barnamenevis.org/forumdisplay.php?28-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%88-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A8%D8%A7%D8%B2%DB%8C%E2%80%8C%D9%87%D8%A7%DB%8 C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1%D B%8C
دوستان آموزش OpenGL هم گذاشتن ازشون ممنونم . خیلی خوبه. بگردید یافت میشه.

amin1softco
پنج شنبه 23 شهریور 1391, 20:50 عصر
برای openGL شدیداً توصیه می کنم این کتاب مطالعه کنید :
http://opengl.persiangig.com/Ebook/draftGRAPHIC.pdf

برای openGL در دلفی هم کتاب آقای نصیری :
http://dl.veyq.ir/ebook/Opengl%5Bebook.VeyQ.ir%5D.zip