PDA

View Full Version : حرکت به کمک محور مختصات



Delphi Skyline
یک شنبه 23 مهر 1385, 21:53 عصر
با سلام
می خواستم بدونم مثلا من یه ماشینو بخوام حرکت بدم چه طوری می تونم تو نقطه حاضر به کمک X,Y به جلو حرکتش بدم ؟؟
با تشکر

kochol
دوشنبه 24 مهر 1385, 10:13 صبح
سلام
خوب سوالتون خیلی گنگ هست ولی خوب x ماشین رو زیاد کنید ماشین حرکت می کند.

Delphi Skyline
سه شنبه 25 مهر 1385, 20:02 عصر
با تشکر . اما منظورم رو می تونید تو عکس ببیننید .

kochol
پنج شنبه 27 مهر 1385, 20:37 عصر
سلام
الان با این عکس خیلی بهتر شد فهمیدم دقیقا می خواهی چی کار کنی.

شما برای این کار باید از بردار ها استفاده کنید. به این صورت که یه بردار در جهت حرکت داشته باشی که یکه باشه بهتر هم هست بعد بر اساس سرعت یه ضریبی از اون بردار را به x و y فعلیت اظافه کنی.
اگه از بردار ها استفاده کنی برنامه ات قابل انعطاف تر خواهد شد و بعدش می تونی از ماتریس ها برای چرخش بردار در نتیجه تغییر جهت حرکت استفاده کنی.
اگر باز هم سوالی داشتی بپرس.
موفق باشی

Delphi Skyline
پنج شنبه 27 مهر 1385, 20:55 عصر
خیلی تشکر . اما کمی میشه در مورد ماتریش ها هم توضیح بدید (فقط توضیح - بقیه رو خودم یادخواهم گرفت) .. بازم خیلی تشکر که وقتتون گذاشتید ...

kochol
پنج شنبه 27 مهر 1385, 21:32 عصر
سلام
راستش من دقیقا نمی دونم شما از چی می خواهید برای گرافیکتون استفاده کنید ولی پیشنهاد من این هست که محیط های دو بعدی رو تو محیط های سه بعدی به اجرا در بیارین چون هم سرعت رندر بیشتره و هم قابلیت های خیلی زیادی دارین.

ببین با استفاده از ماتریس ها تو محیط سه بعدی تمام چرخش ها و انتقالات انجام می شه که api هایی مثل DirectX و OpenGL بسیار با ماتریس ها هماهنگ هستند و از انها استفاده می کنند کلا کاربرد خیلی وسیعی دارد اما حالا ماتریسی که کار شما رو راه بیاندازه.

یه ماتریکس 2 در 2 می تونه برای چرخش بردار دوبعدی کافی باشه ولی برای راحتی کارت من یه راست فرمول چرخش رو برایت می زارم.


x1 = cos ( a ) * x0 - sin ( a ) * y0
y1 = sin ( a ) * x0 + cos ( a ) * y0

که x1 و y1 همون x و y جدید هستند.
x0 و y0 نقاط قبلی هستند و a هم زاویه چرخش بر حسب رادیان هست.
البته این چرخش حول مرکز محور مختصات است که برای بردار ها بسیار کارایی دارد.