امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ماتريس
نویسنده پیام
sscaerott آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 3
تاریخ عضویت: اردیبهشت ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
ماتريس
سلام ميخواستم كه سورس كد يا اموزش ماتريس 4x4 را با ميانگين و نمايش خود ماتريس بدهيد

متشكرم
۰۷-اردیبهشت-۱۳۸۹, ۱۲:۱۲:۲۲
ارسال‌ها
پاسخ
hartan آفلاین
تازه وارد

ارسال‌ها: 15
موضوع‌ها: 1
تاریخ عضویت: اردیبهشت ۱۳۹۵

تشکرها : 5
( 10 تشکر در 10 ارسال )
ارسال: #2
RE: ماتريس
این هم از سیس کد ماتریس 4 در 4 

کد:
bool gluInvertMatrix(const double m[16], double invOut[16])
{
   double inv[16], det;
   int i;

   inv[0] = m[5]  * m[10] * m[15] -
            m[5]  * m[11] * m[14] -
            m[9]  * m[6]  * m[15] +
            m[9]  * m[7]  * m[14] +
            m[13] * m[6]  * m[11] -
            m[13] * m[7]  * m[10];

   inv[4] = -m[4]  * m[10] * m[15] +
             m[4]  * m[11] * m[14] +
             m[8]  * m[6]  * m[15] -
             m[8]  * m[7]  * m[14] -
             m[12] * m[6]  * m[11] +
             m[12] * m[7]  * m[10];

   inv[8] = m[4]  * m[9] * m[15] -
            m[4]  * m[11] * m[13] -
            m[8]  * m[5] * m[15] +
            m[8]  * m[7] * m[13] +
            m[12] * m[5] * m[11] -
            m[12] * m[7] * m[9];

   inv[12] = -m[4]  * m[9] * m[14] +
              m[4]  * m[10] * m[13] +
              m[8]  * m[5] * m[14] -
              m[8]  * m[6] * m[13] -
              m[12] * m[5] * m[10] +
              m[12] * m[6] * m[9];

   inv[1] = -m[1]  * m[10] * m[15] +
             m[1]  * m[11] * m[14] +
             m[9]  * m[2] * m[15] -
             m[9]  * m[3] * m[14] -
             m[13] * m[2] * m[11] +
             m[13] * m[3] * m[10];

   inv[5] = m[0]  * m[10] * m[15] -
            m[0]  * m[11] * m[14] -
            m[8]  * m[2] * m[15] +
            m[8]  * m[3] * m[14] +
            m[12] * m[2] * m[11] -
            m[12] * m[3] * m[10];

   inv[9] = -m[0]  * m[9] * m[15] +
             m[0]  * m[11] * m[13] +
             m[8]  * m[1] * m[15] -
             m[8]  * m[3] * m[13] -
             m[12] * m[1] * m[11] +
             m[12] * m[3] * m[9];

   inv[13] = m[0]  * m[9] * m[14] -
             m[0]  * m[10] * m[13] -
             m[8]  * m[1] * m[14] +
             m[8]  * m[2] * m[13] +
             m[12] * m[1] * m[10] -
             m[12] * m[2] * m[9];

   inv[2] = m[1]  * m[6] * m[15] -
            m[1]  * m[7] * m[14] -
            m[5]  * m[2] * m[15] +
            m[5]  * m[3] * m[14] +
            m[13] * m[2] * m[7] -
            m[13] * m[3] * m[6];

   inv[6] = -m[0]  * m[6] * m[15] +
             m[0]  * m[7] * m[14] +
             m[4]  * m[2] * m[15] -
             m[4]  * m[3] * m[14] -
             m[12] * m[2] * m[7] +
             m[12] * m[3] * m[6];

   inv[10] = m[0]  * m[5] * m[15] -
             m[0]  * m[7] * m[13] -
             m[4]  * m[1] * m[15] +
             m[4]  * m[3] * m[13] +
             m[12] * m[1] * m[7] -
             m[12] * m[3] * m[5];

   inv[14] = -m[0]  * m[5] * m[14] +
              m[0]  * m[6] * m[13] +
              m[4]  * m[1] * m[14] -
              m[4]  * m[2] * m[13] -
              m[12] * m[1] * m[6] +
              m[12] * m[2] * m[5];

   inv[3] = -m[1] * m[6] * m[11] +
             m[1] * m[7] * m[10] +
             m[5] * m[2] * m[11] -
             m[5] * m[3] * m[10] -
             m[9] * m[2] * m[7] +
             m[9] * m[3] * m[6];

   inv[7] = m[0] * m[6] * m[11] -
            m[0] * m[7] * m[10] -
            m[4] * m[2] * m[11] +
            m[4] * m[3] * m[10] +
            m[8] * m[2] * m[7] -
            m[8] * m[3] * m[6];

   inv[11] = -m[0] * m[5] * m[11] +
              m[0] * m[7] * m[9] +
              m[4] * m[1] * m[11] -
              m[4] * m[3] * m[9] -
              m[8] * m[1] * m[7] +
              m[8] * m[3] * m[5];

   inv[15] = m[0] * m[5] * m[10] -
             m[0] * m[6] * m[9] -
             m[4] * m[1] * m[10] +
             m[4] * m[2] * m[9] +
             m[8] * m[1] * m[6] -
             m[8] * m[2] * m[5];

   det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12];

   if (det == 0)
       return false;

   det = 1.0 / det;

   for (i = 0; i < 16; i++)
       invOut[i] = inv[i] * det;

   return true;
}
۱۲-اردیبهشت-۱۳۹۵, ۱۵:۲۸:۲۹
ارسال‌ها
پاسخ
تشکر شده توسط : babyy


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS