디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

다이렉트 x 회전 행렬 질문이요

야망인(124.137) 2013.02.18 18:41:06
조회 121 추천 0 댓글 0

12222123123123.png?type=w620

제가 지금 테트리스를 만들고 있는데 그림처럼 1번 그림이 2번 그림처럼 되기를 원하는데 행렬 곱하는걸 어떻게 해줘야 할지
감이 안잡히네요

지금 처럼 특정키를 누르면 특정 축을 기준으로 회전 하는 소스인데요
if(KeyDown(DIK_Z))
{
  list<BLUCK>::iterator Bliter= BluckList.begin();

  for(BluckIter = BluckList.begin(); BluckIter != BluckList.end(); ++BluckIter)
  {
   if(BluckIter->m_BluckState== BLUCK_MOVE)
   {

    //BluckIter->m_vRot.z=D3DXToRadian(90);
    
    //D3DXMatrixRotationZ(&BluckIter->m_mRot,90);
    
    
    //D3DXMatrixRotationAxis(&BluckIter->m_mRot,&BluckIter->m_vPos,90);
    //D3DXVec3TransformCoord(&BluckIter->m_vPos,&BluckIter->m_v_Z,&BluckIter->m_mTM);

     //float temp=BluckIter->m_vPos.x;
     //BluckIter->m_vPos.x+=BluckIter->m_vPos.y;
     //BluckIter->m_vPos.y=temp;

  
    //회전된 벡터 = (원래 벡터 - 회전 중심 벡터) * 회전 행렬 + 회전 중심 벡터
    //BluckIter->m_vRot=(BluckIter->m_vPos - BluckList.begin()->m_vPos) * BluckIter->m_mRot + BluckList.begin()->m_vPos;
    //이럴경우에는 주위의 모델을 회전시킬때..
    // 기준모델과,  회전하려는 모델의 차이만큰
    // 원점에서 이동시킨후 회전을 시켜야지..
   }
  }
}

변수들의 역할을 정했구요
  D3DXVECTOR3     m_vPos;//정육면체 위치
D3DXVECTOR3     m_vRot;//정육면체 회전
D3DXVECTOR3     m_vScale;//정육면체 크기

D3DXMATRIX     m_mTM;//정육면체 통합행렬
D3DXMATRIX     m_mTrans;//정육면체 이동행렬
D3DXMATRIX     m_mRot;//정육면체 회전행렬
D3DXMATRIX     m_mScale;//정육면체 크기행렬

제가 하려는건 특정 블럭을 기준으로 회전하려고 하는건데요 이게 자꾸 월드행렬 좌표원점을 기준으로 회전을 해서요

참고로 저는 정육면체 클래스를 만들어서 리스트를 사용했구요 사용방식은 스위치문으로 블럭위치를 일일이 다 초기화 해줘서 특정 모양처럼 보이게 했습니다

case 1://일자형
  bluck.m_vPos  = D3DXVECTOR3(1,52,0);
  bluck.m_vRot  = D3DXVECTOR3(0,0,0);
  bluck.m_vScale = D3DXVECTOR3(1,1,1);
  D3DXMatrixIdentity(&bluck.m_mTM);
  D3DXMatrixIdentity(&bluck.m_mScale);
  D3DXMatrixIdentity(&bluck.m_mTrans);
  D3DXMatrixIdentity(&bluck.m_mRot);
  bluck.m_v_X=D3DXVECTOR3(1,0,0);
  bluck.m_v_Y=D3DXVECTOR3(0,1,0);
  bluck.m_v_Z=D3DXVECTOR3(0,0,1);
  bluck.m_BluckState = BLUCK_MOVE;

  BluckList.push_back(bluck);

  bluck.m_vPos  = D3DXVECTOR3(1,50,0);
  bluck.m_vRot  = D3DXVECTOR3(0,0,0);
  bluck.m_vScale = D3DXVECTOR3(1,1,1);
  D3DXMatrixIdentity(&bluck.m_mTM);
  D3DXMatrixIdentity(&bluck.m_mScale);
  D3DXMatrixIdentity(&bluck.m_mTrans);
  D3DXMatrixIdentity(&bluck.m_mRot);
  bluck.m_v_X=D3DXVECTOR3(1,0,0);
  bluck.m_v_Y=D3DXVECTOR3(0,1,0);
  bluck.m_v_Z=D3DXVECTOR3(0,0,1);
  bluck.m_BluckState = BLUCK_MOVE;

  BluckList.push_back(bluck);

  bluck.m_vPos  = D3DXVECTOR3(1,48,0);
  bluck.m_vRot  = D3DXVECTOR3(0,0,0);
  bluck.m_vScale = D3DXVECTOR3(1,1,1);
  D3DXMatrixIdentity(&bluck.m_mTM);
  D3DXMatrixIdentity(&bluck.m_mScale);
  D3DXMatrixIdentity(&bluck.m_mTrans);
  D3DXMatrixIdentity(&bluck.m_mRot);
  bluck.m_v_X=D3DXVECTOR3(1,0,0);
  bluck.m_v_Y=D3DXVECTOR3(0,1,0);
  bluck.m_v_Z=D3DXVECTOR3(0,0,1);
  bluck.m_BluckState = BLUCK_MOVE;

  BluckList.push_back(bluck);

  bluck.m_vPos  = D3DXVECTOR3(1,46,0);
  bluck.m_vRot  = D3DXVECTOR3(0,0,0);
  bluck.m_vScale = D3DXVECTOR3(1,1,1);
  D3DXMatrixIdentity(&bluck.m_mTM);
  D3DXMatrixIdentity(&bluck.m_mScale);
  D3DXMatrixIdentity(&bluck.m_mTrans);
  D3DXMatrixIdentity(&bluck.m_mRot);
  bluck.m_v_X=D3DXVECTOR3(1,0,0);
  bluck.m_v_Y=D3DXVECTOR3(0,1,0);
  bluck.m_v_Z=D3DXVECTOR3(0,0,1);
  bluck.m_BluckState = BLUCK_MOVE;

  BluckList.push_back(bluck);

  break;

화면에 뿌려주는 소스입니다
for(BluckIter=BluckList.begin(); BluckIter != BluckList.end() ; ++BluckIter )
{

  D3DXMatrixTranslation( &BluckIter->m_mTrans, BluckIter->m_vPos.x, BluckIter->m_vPos.y,  BluckIter->m_vPos.z);
  D3DXMatrixRotationYawPitchRoll(&BluckIter->m_mRot, BluckIter->m_vRot.y, BluckIter->m_vRot.x,  BluckIter->m_vRot.z);
  D3DXMatrixScaling(&BluckIter->m_mScale, BluckIter->m_vScale.x, BluckIter->m_vScale.y,  BluckIter->m_vScale.z);
  

  BluckIter->m_mTM = BluckIter->m_mScale * BluckIter->m_mTrans  * BluckIter->m_mRot ;

  g_pDevice->SetTransform(D3DTS_WORLD,&BluckIter->m_mTM);//통합행렬을 월드 좌표계로

  g_pDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
  g_pDevice->SetStreamSource(0,m_pVB,0,sizeof(D3DFVF_XYZ_COLOR));
  g_pDevice->SetFVF(FVF_XYZ_COLOR);

  g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,36);
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 모태 솔로도 구제해 줄 것 같은 연애 고수 스타는? 운영자 25/07/21 - -
348149 공룡책 보면 모바일 os 만들어서 팔 수 있나여?? [2] 멍청닭(39.7) 13.03.06 207 0
348148 형들 IT쪽은 학점은행제로 해서 4년제따면 대우해줌? [1] 학점(1.245) 13.03.06 145 0
348147 학원 다닐 새끼들은 진지하게 봐라 (125.177) 13.03.06 120 0
348146 밑에 파이썬 딕셔너리 재질문좀..ㅜ ㅍㅍㅍㅍ(1.245) 13.03.06 55 0
348145 막상 명저 까는 새끼들 [6] (125.177) 13.03.06 97 0
348144 윤성우 김상형만 믿고 가자 ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ (125.177) 13.03.06 116 0
348142 전쟁나기 전에 해외 취업해라 멍청닭(182.211) 13.03.06 73 0
348141 잡스에 대해 폄하하는 사람들이 많은데 [3] ㅇㅇ(119.203) 13.03.06 93 0
348140 공룡책 모르는 애들은 [1] ㅁㄴㄻㄹ갤로그로 이동합니다. 13.03.06 127 1
348139 스잡은 학력이 개판인데 어케차고에서 컴터 만들었냐?> [4] ㅁㄴㅇ(59.11) 13.03.06 108 0
348138 대학원 가려면 뭐 준비해야할까 [1] topandbottom갤로그로 이동합니다. 13.03.06 74 0
348137 근데 공룡책이 뭐하는 책임? [2] dd(121.163) 13.03.06 124 0
348135 임베디드 분야는 공부를 하고 싶어도 돈이 너무 많이 든다. [7] 멍청닭(182.211) 13.03.06 159 0
348134 스티브 워즈니악이 제주도 여고생에게 보낸 메일이란다 [2] ㅇㅇ(119.203) 13.03.06 218 0
348131 나도 돈 벌고 싶다 [2] 에어로홍갤로그로 이동합니다. 13.03.06 79 0
348130 잠깐 개념글 봤는데... [1] ㅇㅇ(119.203) 13.03.06 58 0
348129 공룡책 프로그래밍 언어 몰라도 볼 수있남? [1] 듀스(124.153) 13.03.06 101 0
348128 이 책으로 사람 머리 치면 [1] ㅁㄴㅇ(59.11) 13.03.06 89 0
348127 책들이 두껍기만하지 펼치면 글씨는 크고 공백은 많고 [1] ㅁㄴㅇ(59.11) 13.03.06 44 0
348126 난 연봉 2억 밖에 안됨 [1] ㅇㅇ(119.203) 13.03.06 135 0
348125 백왕 연봉 5천도 안되서 빌빌대는거냐 (61.74) 13.03.06 67 0
348123 책은 없어도 되고 안 봐도 된다 [2] ㅇㅇ(119.203) 13.03.06 76 0
348122 빌드랑 리비전이랑 차이점이 뭐냐? [3] ㅁㄴㄻㄹ갤로그로 이동합니다. 13.03.06 84 0
348121 ssh 포트열어놨더니 왜이리 공격을 쳐해대는거임? [1] 공돌이(204.14) 13.03.06 96 0
348119 불대수 간략화 어떻게 하는거냐 [2] ㅁㄴㅇ(59.11) 13.03.06 151 0
348118 지금 댓글 잘 안달린다. [1] 에어로홍갤로그로 이동합니다. 13.03.06 48 0
348115 형들 VS2010 으로 DLL을 배포 했는데 XP환경에서 안돌아가요ㅠㅠ [5] 도와주세요(27.1) 13.03.06 118 0
348114 마침 나도 운영체제 수업 책 공룡책인데 7판 하고 8판 많이 다름? [6] WM_USER+100(123.140) 13.03.06 183 0
348110 헐 형들..ㅜㅜ ㅇㅇ(223.62) 13.03.06 40 0
348109 예전부터 느끼는 거지만 프갤 글은 영양가가 없다 [4] 에어로홍갤로그로 이동합니다. 13.03.06 114 0
348105 파이썬 딕셔너리 비교하려고하는데... [9] ㅍㅍㅍㅍ(1.245) 13.03.06 166 0
348103 아 x밤 api 코딩 짜증나 죽겠네.... [1] 호좁이(112.216) 13.03.06 77 0
348100 프로그래밍 숙제와 관련된 사진과 내용이 있어야 합니다. [2] d(1.214) 13.03.06 92 0
348099 c수업갔는데 vc6.0을 쓰겠데 6.0 [10] 마이리틀포니짱짱갤로그로 이동합니다. 13.03.06 197 0
348098 횽들 간단한 파일 입출력 문제 좀 도와줭 ㅜㅠ [4] 김삼디(110.9) 13.03.06 99 0
348097 두껍다 드립치지마라 [5] dot(113.30) 13.03.06 183 0
348096 공룡책 보지 마라. 이거면 충분하다. [1] os(182.211) 13.03.06 259 0
348095 공룡책 원서 1페이지에 한시간걸림 [3] ㅇㅇ(110.70) 13.03.06 143 0
348094 회사다 ??(61.74) 13.03.06 43 0
348093 분산시스템이라는 과목 어때요? [2] 길가던놈갤로그로 이동합니다. 13.03.06 71 0
348092 컴공과 졸업생중에 전공따라 취업하는애 간추려봤더니 ww(121.186) 13.03.06 214 0
348091 웹에서 php 작업하기 좋은 에디터 추천좀여 ㅎㅎ [9] Mayu갤로그로 이동합니다. 13.03.06 160 0
348090 대학을 안가봐서 그런데 컴공학과 이런데는 [8] (125.177) 13.03.06 247 1
348088 자라 [1] 루비•‿•갤로그로 이동합니다. 13.03.06 56 0
348087 이정도면 이력 죽이는거냐??????????????????????? [2] (125.177) 13.03.06 227 0
348086 전산계열 병역특례에 대해 질문좀 드리겠습니다. [14] (58.232) 13.03.06 142 0
348085 안드레기 프로그래밍 정복 3판 담달에 나오네 ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ [2] (125.177) 13.03.06 106 0
348084 hot to program 시리즈는 뭐가 본좌냐?????????????? [2] (125.177) 13.03.06 63 0
348083 다음에가봐라 미친새끼들졸라많다 [4] ㅈㄷㄱ(175.215) 13.03.06 203 5
348082 정전협정 백지화? [2] 이모군(175.114) 13.03.06 80 0
뉴스 '좀비딸' 조정석 "6세 딸 위해 목숨도 걸 수 있어요"[인터뷰] 디시트렌드 07.25
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2