ورود

View Full Version : سوال: ماتریس انتقال



majid2230
چهارشنبه 16 تیر 1389, 05:45 صبح
با سلام ، می دونم شاید سوالم ربطی به این تاپیک نداشته باشه ولی از اونجایی که برای برنامه نویسی از پاسکال استفاده می کنم و برنامه ای که این الگوریتم رو براش نیاز دارم هم در پاسکال هست گفتم سوال رو اینجا مطرح کنم شاید یکی که قبلا مشکل من رو داشته بتونه کمک کنه :
فرض کنید ما 6 نقطه در مختصات سه بعدی داریم که سه تا از اونها در واقع منتقل شده ( جابجایی ، دوران ، تجانس ) سه نقطه دیگر هستند ، سوال اینه که چه جوری ماتریسی که این نقاط رو ( سه تا رو به سه تای دیگه ) به هم منتقل می کنه حساب کنم ؟

سوالم از فرط استیصال هست و می دونم به این تاپیک ربطی نداره ولی خواهش می کنم کمک کنید !!!!!!

SAASTN
چهارشنبه 16 تیر 1389, 22:10 عصر
همونطور که خودتون هم اشاره کردید این سوال بیشتر ریاضیه تا برنامه نویسی، راه حل ریاضیش هم اینه که یه دستگاه 9 معادله 9 مجهول تشکیل بدی:

[P1]*[M] = [P1']
[P2]*[M] = [P2']
[P3]*[M] = [P3']

سطر اول رو که بسط بدیم می رسیم به همچین چیزی:

_ _ _ _ _ _
| P1x | | a b c | | P1xa + P1yb + P1zc |
| | | | | |
| P1y | * | d e f | = | P1xd + P1ye + P1zf |
| | | | | |
| P1z | | g h i | | P1xg + P1yh + P1zi |
|_ _| |_ _| |_ _|

P1xa + P1yb + P1zc = P1'x
P1xd + P1ye + P1zf = P1'y
P1xg + P1yh + P1zi = P1'z
دو سطر بعدی رو هم بسط میدیم و شش تا معادله دیگه بدست میان که میشه 9 معادله و a تا i هم 9 مجهول مسئله هستند که درایه های ماتریس transformation رو تشکیل می دن.

احیانا دنبال تبدیل مختصات محلی به جهانی هستی؟

majid2230
پنج شنبه 17 تیر 1389, 02:44 صبح
این فقط برای ماتریس های دوران هست ، در حالیکه ماتریسی که من دارم دوران ، تجانس و انتقال هست و ماتریس حاصل 4*4 هست (سطر آخر فقط صفره به جز درایه آخر که یکه ، یعنی 12 مجهول )
که فکر نکنم با روش فوق بشه حلش کرد (من از یه روش حل تکراری استفاده کردم ولی جواب نمی ده )

SAASTN
پنج شنبه 17 تیر 1389, 10:53 صبح
این فقط برای ماتریس های دوران هست ، در حالیکه ماتریسی که من دارم دوران ، تجانس و انتقال هست و ماتریس حاصل 4*4 هست (سطر آخر فقط صفره به جز درایه آخر که یکه ، یعنی 12 مجهول )
هر چند مسئلتون حل شد، ولی:
درسته بعضی از تبدیلات مثل انتقال و پرسپکتیو رو نمی شه با ماتریس 3*3 پیاده کرد. برای همین از ماتریس های 4*4 استفاده می شه، برای این منظور بردارهایی هم که می خوان در ماتریس ضرب بشن باید 4 درایه داشته باشن، درایه آخر بسته به موقعیت می تونه 1 یا 0 باشه.
زمانی که بردار ما معادل یک نقطه تو فضا باشه درایه آخر رو 1 قرار می دیم که باعث میشه تمامی ماتریس های تبدیل روی بردار عمل کنند، اما وقتی بردار نشاندهنده یه جهت هست، مثل شمال یا چپ، درایه آخر رو صفر میذاریم که باعث میشه ماتریس انتقال روش عمل نکنه.
به این ترتیب دستگاه میشه 16 معادله و 16 مجهول.
اگه از راه دیگه ای هم رفتید ممنون می شم یکم توضیح بدین...

majid2230
پنج شنبه 17 تیر 1389, 14:51 عصر
سلام و با تشکر از توجهتون
من از همان روش که گفتید استفاده کردم ( که منجر به 12 مجهول شد) که اگه چهار نقطه را قبل و بعد از انتقال داشته باشیم 12 معادله خواهیم داشت ولی من بعد از تشکیل و حل دستگاه (به روش گاوس ) متوجه شده که 4 نقطه نباید در یک صفحه باشند وگر نه حل نمی شود ، چند تا سوال دارم :

1: آیا حتما باید 4 نقطه باشد در حالیکه اگر ماتریس انتقال را به صورت حاصل ضرب ماتریسهای دوران ، تجانس و انتقال بنویسیم می بینیم که فقط 9 مجهول داریم که به معنی 3 نقطه است ولی امتحان کردم جواب نداد .

2:آیا اگر چهار نقطه در یک صفحه باشند ماتریس انتقال یکتایی وجود ندارد ( دستگاه واگرا می شود )

SAASTN
جمعه 18 تیر 1389, 09:44 صبح
1: آیا حتما باید 4 نقطه باشد در حالیکه اگر ماتریس انتقال را به صورت حاصل ضرب ماتریسهای دوران ، تجانس و انتقال بنویسیم می بینیم که فقط 9 مجهول داریم که به معنی 3 نقطه است ولی امتحان کردم جواب نداد .

2:آیا اگر چهار نقطه در یک صفحه باشند ماتریس انتقال یکتایی وجود ندارد ( دستگاه واگرا می شود )
از نظر ریاضی وقتی شما 9 تا مجهول داری 9 تا معادله کفایت می کنه و باید جواب بده، ولی خوب بعضی وقتها دو یا چند تا از معدله ها هم ارز می شند که عملا یکیشون حذف میشه و معادلات ما کم میشه و جواب بدست نمیاد.
تا جایی که یادم میاد وقتی ماتریس انتقال رو هم در ماتریس تبدیل ضرب می کنیم سطر آخر ماتریس هم مقدار می گیره و در مجموع میشه 12 مجهول.
اما در مورد تعداد نقاط، گند ترین بخش تبدیل دورانه، شما وقتی یک نقطه داری که به نقطه دیگه منتقل شده با بی نهایت دوران مختلف می تونی این تبدیل رو انجام بدی و همشون هم جواب های درستی هستند ولی وقتی یه مجموعه از نقاط رو با دوران یکی از نقاطشون دوران می دی می بینی شیئ شکل خودش رو حفظ کرده ولی جهت درست رعایت نشده. اتفاقا توی همین شرایط هست که دستگاه جواب نداره و از روش های دیگه برای بدست اوردن زاویه استفاده می شه، توی دوران حداقل سه نقطه که تو یه صفحه هم نباشن لازمه تا نتیجه درست باشه. فکر می کنم وقتی انتقال هم اضافه می شه چون سطر چهارم ماتریس تبدیل رو تغییر می ده به یه نقطه دیگه هم احتیاج داریم که میشه 12 معادله 12 مجهول.
من جایی که با این مباحث کار داشتم به انتقال و تجانس احتیاجی نبود، تجانس اصلا وجود نداشت، انتقال هم که با یه for در می اومد. فقط دوران که برای اون هم محورهای مختصات جهانی رو به مختصات محلی شئی تبدیل می کردم.

i, j, k -> 1, 2, 3
حالا اگه مبدا مختصات جهانی یعنی 0و 0و 0 به مبدا شیئ بعد از تبدیل رو هم به دستگاه اضافه کنی باید دربیاد.
می تونم بپرسم چیکار می کنی؟