디시인사이드 갤러리

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

갤러리 본문 영역

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

야망인(124.137) 2013.02.18 18:41:06
조회 117 추천 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/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
346782 임베디드는 대학원이 답인가? [8] topandbottom갤로그로 이동합니다. 13.02.22 378 0
346781 공대학생분들IT특기병준비방법궁금하신점 무료로상담해드립니다. [1] 김민섭팀장(211.48) 13.02.22 217 0
346780 근데 표준이랑 컴파일러 만드는거랑 별개임? [1] 홋홋(221.160) 13.02.22 49 0
346779 텔넷, ssh, vnc중에서 제일 많이쓰이는게 뭐야? [2] 333(115.144) 13.02.22 86 0
346777 뭐야 .. 1등으로 출근함 만지자갤로그로 이동합니다. 13.02.22 51 0
346776 리눅스에서쓸 좋은 디버거 추천좀해줘형들^^ ㅁㄴㅇㄴㅈㅂㄱ(14.37) 13.02.22 47 0
346775 윈도우 프로그래머들 다 디젔냐 ? ㅋ1(121.164) 13.02.22 91 0
346774 횽들 데이터마이닝 책 한권 추천해주라~ 이즈키(59.187) 13.02.22 80 0
346769 아 횽들 도와줘!! [3] 15534(108.198) 13.02.22 78 0
346768 홈피 대리제작 말인데 [6] ㅇㅇ(1.245) 13.02.22 181 0
346766 닷넷프레임워크가 다른os에도 지원될가능성잇음? [5] 작성자(175.215) 13.02.22 143 0
346765 ps4가 공개 됫다고하네 [2] 일광면(121.177) 13.02.22 98 0
346764 이번달까지 웹 완성해야 하는데 벌써 금욜이네 [1] 미클(218.232) 13.02.22 106 0
346763 아 c#배우고싶다 ㄷㄱ2ㄷ(175.215) 13.02.22 68 0
346762 나 남친이랑 깨졌어 [5] 짜증나(211.234) 13.02.22 248 0
346761 프로그래밍 책이나 좋은 자료 추천좀 [18] ㄱㄱ(211.196) 13.02.22 213 0
346760 요즘 자바스크립트 써야되는 이유 중 한가지 [1] 햄버거(124.49) 13.02.22 168 0
346757 [C++] 상속이란..? [12] ssonacy갤로그로 이동합니다. 13.02.22 300 0
346755 프갤님들 어떤게 김치마인드죠? [3] QQQ(168.126) 13.02.22 174 0
346754 웹에서 자바스크립트 써야되는.EU [1] ㅁㅁ(223.62) 13.02.22 132 0
346753 이거 자바스크립트인거같은데 이기능 어떻게구현하는거임?? [2] ㅈㅇ2(175.215) 13.02.22 130 0
346752 아래한글 제작하려고 비쥬얼 스튜디오 깔았는데 [4] ㅇㅇ(211.196) 13.02.22 109 0
346751 전 자바스크립트 alert함수만씀 [2] ㅈㅇ2(175.215) 13.02.22 135 0
346750 카네기 멜론 유학가려면 [1] ㄱㄱ(211.196) 13.02.22 171 0
346749 씨발 ㅡㅡ centOS쓰다가 다른종류다깔아봣는데 centOS가제일좋네ㅡㅡ [2] ㅁㄴㅇㄹ(14.37) 13.02.22 136 0
346746 자바스크립트로 웹에서 실질적으로 할수잇는게 뭐잇음? [35] ㅈㅇ2(175.215) 13.02.22 256 0
346745 유명 컴공과에선 4년동안 뭘 배우나요? [31] ㄱㄱ(211.196) 13.02.21 372 0
346744 스스드에 우분투 깔고 외장하드에 tiny7 깔려는대 쓸만할려나 다크애쉬갤로그로 이동합니다. 13.02.21 45 0
346743 내일 회식인데.... [5] 만지자갤로그로 이동합니다. 13.02.21 89 0
346742 오늘 면접 후기 [7] topandbottom갤로그로 이동합니다. 13.02.21 431 1
346741 달력다만듬 + 파라미터에 따라 가로 정할수 있게함 [8] ㅠㅠ개초보(218.153) 13.02.21 148 0
346740 자바스크립트 짱짱맨 ㅁㅁ(223.62) 13.02.21 51 0
346739 웹페이지 만들엇는데 홍보어디서함? [7] web(175.215) 13.02.21 113 0
346737 dot횽 미클갤로그로 이동합니다. 13.02.21 47 0
346736 왜 요즘 리눅스하면 우분투를 많이 쓰고 추천해주는거야?? [7] ㅁㄴㅇㄹ(14.37) 13.02.21 171 0
346735 구글애널레스트가먼ㄱ지 아는사람 잇냐 [2] ■x(175.202) 13.02.21 96 0
346734 횽들 스크립트 실행하는걸 왜 제한해? (소스 있음) [13] 미클갤로그로 이동합니다. 13.02.21 111 0
346730 자바스크립트 브라우저객체모델,문서객체모델만 배워도 상관없음? [4] web(175.215) 13.02.21 121 0
346728 질문하나만 [2] 형들(203.171) 13.02.21 70 0
346727 USB 3.0 붙은거 오프에서 살려니까 19000원이내. [5] 다크애쉬갤로그로 이동합니다. 13.02.21 93 0
346726 횽들 LDAP이나 FTP도 원격접속 프로토콜이라고 할수있나? [1] (183.100) 13.02.21 61 0
346725 항상 관리자 권한으로 실행되게 어떻게 해요? [4] 유쾌상쾌(211.202) 13.02.21 171 0
346723 프로그래밍에도 분류가있는데 [2] 자살..갤로그로 이동합니다. 13.02.21 136 0
346722 자바스크립트 공부하는데 객체만드는거 이런거넘어가면안뎀?? [1] ㅈㄷ2ㄷㄱ(175.215) 13.02.21 73 0
346721 4년제 컴공 준비 [6] 자살..갤로그로 이동합니다. 13.02.21 161 0
346720 해킹을 소재로한 다큐 영화 추천받음 [4] 광년이(180.229) 13.02.21 208 0
346719 아까 우분투추천한새끼필독 ㅅㅂ 존나불편 쉘은어캐켜 없냐? [2] ㅁㄴㅇㄹ(14.37) 13.02.21 91 0
346718 삽질 크게 한번했다.. 어쩌냐.. ㅇㅇ(58.102) 13.02.21 56 0
346717 c#문법 원래 이런겁니까?? [1] 마이리틀포니짱짱갤로그로 이동합니다. 13.02.21 134 0
346715 형들 이문제좀 풀어줘요 ㅋㅋ 물구나무(112.148) 13.02.21 65 0
뉴스 [집 나가면 개호강] ‘스카이개슬 1타(?)’ 강소라VS조한선, 불꽃 신경전! 눈 가리고 ‘아웅’ 승부…세기의 대결!  디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2