الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى transformation

مغلق
بدأه Ahmed_ElNaggar في 31 أكتوبر 2005 · 18 رد · 1,235 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فى مشكلة عندى فى trnsformation وهى انى لما اقوم بعمل اكتر من وظيفة زى rotation و translation مع بعض مبيتنفذش منهم غير واحدة بس وهى اللى بيكون تحها g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

ازاى اقدر انفذ كذا transform مع بعض وشكرا

#2

و عليكم السلام ،، اهلاً بك بالفريق العربي

انتبه اولاً

ان عملية نقل المحاور تبدأ بالترتيب من اليسار لليمين

Rotation * Translating * Scaling

لاحظ الترتيب ، و قل لنا الناتج .

تقوم بضرب المصفوفات في بعد و هي من خواص المصفوفات تجميع التحويلات المصفوفية في مصفوفة تكون هي مصفوفة وضعك في العالم الثلاثي البعد .

F=R*T*S

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

ااهلا بيك أحمد

انا عملت اللى قولت عليه لقيت الشاشة فضيت خالص وبيتهيألى انا عملته غلط عالعموم اهو الكود وشوفه

// For our world matrix, we will just leave it as the identity

D3DXMATRIX matWorld;

D3DXMATRIX matRotX, matRotY, matRotZ;

D3DXMATRIX matTrans;

D3DXMATRIX matScale;

D3DXMatrixRotationX(&matRotX,0);

D3DXMatrixRotationY(&matRotY, 40);

D3DXMatrixRotationZ(&matRotZ, 0);

D3DXMatrixTranslation( &matWorld,0,0,0);

D3DXMatrixScaling( &matWorld,2,2,2);

// Set matWorld to identity

D3DXMatrixIdentity(&matWorld);

// Combine all matrices into world transformation matrix

D3DXMatrixMultiply(&matWorld, &matWorld, &matScale);

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotX);

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotY);

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotZ);

D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans);

g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

#4

قم بتعديل ضرب المصفوفات بالترتيب

دوران ، ازاحة ، تكبير ( إثبتها رياضياً ) ...

انت عاكس ايضاً ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#5

شكرا اوى على ردك ياأحمد

بس برضه الشاشة فاضية ومفيش حاجة بتظهر واهو الكود بعد تعديله

انا عالعموم حرفق معاه كود المشروع وياريت تشوفه وترد عليا فيه

// For our world matrix, we will just leave it as the identity

D3DXMATRIX matWorld;

D3DXMATRIX matRotX, matRotY, matRotZ;

D3DXMATRIX matTrans;

D3DXMATRIX matScale;

D3DXMatrixRotationX(&matRotX,0);

D3DXMatrixRotationY(&matRotY, 0);

D3DXMatrixRotationZ(&matRotZ, 0);

D3DXMatrixTranslation( &matWorld,0,0,0);

D3DXMatrixScaling( &matWorld,1,1,1);

// Set matWorld to identity

D3DXMatrixIdentity(&matWorld);

//Combine all matrices into world transformation matrix

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotX);

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotY);

D3DXMatrixMultiply(&matWorld, &matWorld, &matRotZ);

D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans);

D3DXMatrixMultiply(&matWorld, &matWorld, &matScale);

g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

#6

ارفق المشروع

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#7

أسف يا أحمد افتكرت نفسى حطيت المشروع

Meshes.rar

#8

يعني قمت بتدوير المجسم علي المحور Z من هنا ابدأ في الازاحة و التكبير ...

a.txt

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#9

عملت اللى قولتلى عليه وبرضه مبينفذش غير حاجة واحدة بس

حتى شوف بنفسك

2nd.txt

#10

تفضل الحاجة كاملة ...

Ahmed.txt

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#11

ألف ألف ألف شكر

وكل اللى أقدر اعملهولك انى ادعيلك ربنا يباركلك ويزيدك

#12

معلش يا أحمد فى حاجة بالنسبة لscale matrix

الدالة دى

D3DXMatrixMultiply(&world_matrix,&rot_matrix,&trans_matrix);

بتاخد 3 معاملات بس ولما آجى احط الدالة دى مبينفذش غيرها وينسى اللى فوقيها

D3DXMatrixMultiply(&world_matrix,&trans_matrix,&scale_matrix);

تقدر تقوللى اعمل ايه فيها عشان انفذ الدوران والازاحة والتكبير مع بعض؟؟؟؟؟؟؟؟

#13

اضرب اثنين Rot*Translate و سجلهم في ماتريكس

و اضرب الماتريكس الثالثة في الScale Matrix .

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#14

معلش ياأحمد

ازاى أسجل المصفوفتين فى مصفوفة واحدة؟

#15

أنا عارف انى تقلت عليك ياأحمد

بس الموضوع ده انا عاوزه بجد

#16

لو كنت اعرف dx كان لقيتني اتفلسف :D

شوف مثلا :

http://www.andypike.com/tutorials/directx8/005.asp

او

http://www.drunkenhyena.com/pages/projects/d3d_tutorial.php

فيه الماتركس .. بالامثلة .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#17

ألف شكر أخوى الشمرى

وربنايزيدك من عنده

#18

معلش أحمد فى مشكلة جديدة ظهرت معاية

الrotation واحدة بس منه اللى بتتنفذ وهى آخرواحدة يعنى مثلا

D3DXMatrixRotationY(&rot_matrix,rot_y);

D3DXMatrixRotationX(&rot_matrix,rot_x);

بينقذ rotation الx بس

ازاى بقى اعمل ال3 rotation مع بعض

#19

ايه ياأحمد فينك أنا كنت بتكلم عن الدايركت اكس

ايه اللى دخل الموضوع فى open gl

معلش أحمد فى مشكلة جديدة ظهرت معاية

الrotation واحدة بس منه اللى بتتنفذ وهى آخرواحدة يعنى مثلا

D3DXMatrixRotationY(&rot_matrix,rot_y);

D3DXMatrixRotationX(&rot_matrix,rot_x);

بينقذ rotation الx بس

ازاى بقى اعمل ال3 rotation مع بعض

هذا الموضوع مغلق.

مواضيع مشابهة