コード例 #1
0
ファイル: BoxToBox.cpp プロジェクト: lcs2/carpg
bool OrientedBoxToOrientedBox(const Obbox& obox1, const Obbox& obox2, Vec3* _contact)
{
	int skip = 0;
	dContactGeom *contact = 0;

	dMatrix3 R1;
	dMatrix3 R2;

	for(int j = 0; j < 3; j++)
	{
		R1[0 + 4 * j] = obox1.rot(j, 0);
		R2[0 + 4 * j] = obox2.rot(j, 0);

		R1[1 + 4 * j] = obox1.rot(j, 1);
		R2[1 + 4 * j] = obox2.rot(j, 1);

		R1[2 + 4 * j] = obox1.rot(j, 2);
		R2[2 + 4 * j] = obox2.rot(j, 2);
	}

	Vec3 normal;
	float depth;
	int return_code;
	int maxc = 4;
	Result output;

	dBoxBox2(
		obox1.pos, R1, obox1.size,
		obox2.pos, R2, obox2.size,
		normal, &depth, &return_code,
		maxc, contact, skip,
		output
	);

	if(output.HasContact())
	{
		if(_contact)
			*_contact = output.GetContact();
		return true;
	}

	return false;
}