검색결과 리스트
Project BloodSummoner에 해당되는 글 6건
- 2014.07.07 cube 텍스쳐 생성 방법
- 2014.07.07 행렬의 곱이 성립하려면
- 2014.03.03 점과 구 충돌 여부 확인
- 2014.03.03 구와 구의 충돌 여부 확인
- 2014.01.28 두 점을 지나는 직선의 2차원 평면상의 기울기를 구한다.
- 2014.01.27 방향 벡터 구하기
글
cube 텍스쳐 생성 방법
ndivia dds 포토샵 플러그인을 다운 받아 설치 후 포토샵에서 제작
directx texture tool 에서 작성 (directx sdk)
설정
트랙백
댓글
글
행렬의 곱이 성립하려면
A 행렬은 l행 m열
B 행렬을 m행 n열이라고 정의할 때 두행렬의 곱셈이 성립하려면
A의 열과 B의 행이 같아야한다.
두 행렬 곱의 결과는 l행 n열의 행렬이 나온다.
행기준 변환 행렬일 때 벡터와의 곱셈 연산
mul(벡터, 행렬)
열기준 변환 행렬 예
열기준 변환 행렬일 때는
mul(행렬, 벡터)
3D 이팩트를 공부하려면 기본적인 내용..
설정
트랙백
댓글
글
점과 구 충돌 여부 확인
구와 구의 충돌에 이어 똑같은 개념이다.
구의 중점과 점의 거리가 구의 반지름보다 작으면 구가 점을 포함하기 때문에 충돌여부를 알 수가 있다.
/******************************************************************************
[5/21/2008 Hyun]
Method: IsCollisionPointToSphere
FullName: OcGlobalFunction::IsCollisionPointToSphere
Access: public
Returns: BOOL
Qualifier:
Parameter: const D3DXVECTOR3 * pPos1 - 구 중점
Parameter: const D3DXVECTOR3 * pPos2 - 점
Parameter: float fRadius - 반지름의 제곱
TODO : 점과 구 충돌 여부 확인 함수
******************************************************************************/
inline BOOL IsCollisionPointToSphere(const D3DXVECTOR3* pPos1, const D3DXVECTOR3* pPos2, float fRadius)
{
D3DXVECTOR3 vSub ;
D3DXVec3Subtract(&vSub, pPos1, pPos2) ;
if (fRadius*fRadius > D3DXVec3LengthSq(&vSub))
{
return TRUE ;
}
return FALSE ;
}
설정
트랙백
댓글
글
구와 구의 충돌 여부 확인
개념은 비교적 단순한데 2차원 평면상의 원은 중점과 반지름으로 표현이 가능하다.
원 A는 좌표가 (0,0) 이고 반지름이 5, 원 B는 좌표가 (10, 10)이고 반지름이 4라고 가정하면
두 원 A와 B사이의 거리는 두원의 중점간의 거리가 된다.
두 중점간의 거리가 두 원의 반지름의 합보다 작거나 같으면 두 원은 충돌이다.
구는 x, y, z 좌표상의 중점과 반지름으로 표현이 가능하다.
3차원 좌표상의 구를 아래의 구조체로 표현을 한다고 가정하면
typedef struct tag_BoundingSphere
{
D3DXVECTOR3 _vCenter ;
float _fRadius ;
tag_BoundingSphere()
{
}
tag_BoundingSphere(const D3DXVECTOR3& v, float r)
{
_vCenter = v ; _fRadius = r ;
}
} SBOUNDINGSPHERE, *LPSBOUNDINGSPHERE ;
inline BOOL IsCollisionSphereToSphere(const LPSBOUNDINGSPHERE pS1, const LPSBOUNDINGSPHERE pS2)
{
return (pow(pS2->_vCenter.x - pS1->_vCenter.x, 2) +
pow(pS2->_vCenter.y - pS1->_vCenter.y, 2) +
pow(pS2->_vCenter.z - pS1->_vCenter.z, 2) <
pow(pS1->_fRadius + pS2->_fRadius, 2)) ;
}
제곱근을 구하지 않는 이유는 루트연산이 부하가 크기 때문이며 루트 연산을 하지 않아도 의도한 결론을 얻을 수 있기 때문이다.
설정
트랙백
댓글
글
두 점을 지나는 직선의 2차원 평면상의 기울기를 구한다.
공식은 단순하다.
점 A(X1, Y1) 와 점 B(X2, Y2)가 있을 때 두 점을 지나는 직선의 기울기는
샘플코드..
/******************************************************************************
[10/29/2008]
Method: GetSlopePoint
FullName: OcGlobalFunction::GetSlopePoint
Access: public
Returns: float
Qualifier:
Parameter: D3DXVECTOR3 & vPointA - 점 1
Parameter: D3DXVECTOR3 & vPointB - 점 2
TODO : 두 점을 지나는 직선의 2차원 평면상의 기울기를 구한다.
******************************************************************************/
inline float GetSlopePoint(D3DXVECTOR3& vPointA, D3DXVECTOR3& vPointB)
{
return (vPointB.z - vPointA.z) / (vPointB.x - vPointA.x) ;
}
설정
트랙백
댓글
글
방향 벡터 구하기
두 점사이의 거리를 구해서 정규화하면 됩니다.
거리 = 도착점 - 시작점
DirectX 정규화 함수
D3DXVECTOR3* D3DXVec3Normalize(D3DXVECTOR3 *pOut, CONST D3DXVECTOR3 *pV)
셰이더에서..
float4 position;
float4 lightPosition;
// 물체의 위치와 광원의 위치 정보를 받았다고 치고..
float3 lightDirection = position.xyz - lightPosition.xyz; // 거리구하고
lightdirection = normalize(lightDirection); // 정규화
RECENT COMMENT