게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
외적을 이용한 AB CD 두 직선 교차
게시물ID : science_26070짧은주소 복사하기
작성자 : 황금비
추천 : 0
조회수 : 874회
댓글수 : 1개
등록시간 : 2013/10/24 19:10:26

양 끝점을 충돌에 포함하지 않는 직선의 교차 판정식: (AC X AB) ·(AB X AD) > 0 && (CA X CD) ·(CD X CB) > 0

예외 상황: A B C D 네점이 같은 직선위에 있는 경우 판별식 AB X CD =0 && AC X CD = 0
이 경우  CA ·DA <0 || CB ·DB <0 || AC ·BC <0 || AD ·BD <0 이면 교차 판정


첨부된 파일의 Main.cpp 보면 int CollisionLineToLine(const D3DXVECTOR2* v1, const D3DXVECTOR2* v2) 함수가 있습니다. 이 함수가 교차 판정해주는 함수네요.


72라인에 테스트용 위치가 있는데 [0]: 직선의 시작위치 [2]: 직선의 방향 벡터, [1]: 두 번째 좌표 입니다.

// Line 1
m_pLine1[0] = D3DXVECTOR2(50, 90);
m_pLine1[2] = D3DXVECTOR2(1,1.3F) * 150;
m_pLine1[1] = m_pLine1[0] + m_pLine1[2];

// Line 2
m_pLine2[0] = m_pLine1[1] - m_pLine1[2]*0.1F;
m_pLine2[2] = D3DXVECTOR2(1, -1.1F) * 200;
m_pLine2[1] = m_pLine2[0] + m_pLine2[2];

LEFT, RIGHT, UP, DOWN을 하면 직선이 움직이고 충돌하면 윈도우 타이틀에 충돌 메시지가 출력 되네요.

빌드는 vc2008 , directSDK 2010 9.0C


http://3dapi.com/bs12_2d_app/Sp32_Coll_line.zip

zip안에 exe 파일이 있네요. 

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호