Subversion Repositories gelsvn

Rev

Rev 299 | Rev 321 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 299 Rev 309
Line 18... Line 18...
18
	int ri = right->intersect_cnt(p,dir);
18
	int ri = right->intersect_cnt(p,dir);
19
	return li + ri;
19
	return li + ri;
20
}
20
}
21
 
21
 
22
template<class BoxType>
22
template<class BoxType>
-
 
23
void BoundingINode<BoxType>::intersect(Ray& r) const 
-
 
24
{
-
 
25
	if(BoxType::intersect(r.origin,r.direction))
-
 
26
	{
-
 
27
			left->intersect(r);
-
 
28
			right->intersect(r);
-
 
29
	}
-
 
30
}
-
 
31
 
-
 
32
template<class BoxType>
23
bool BoundingINode<BoxType>::intersect(const CGLA::Vec3f& p , const CGLA::Vec3f& dir,
33
bool BoundingINode<BoxType>::intersect(const CGLA::Vec3f& p , const CGLA::Vec3f& dir,
24
															float& tmin) const 
34
															float& tmin) const 
25
{
35
{
26
	if(!BoxType::intersect(p,dir))
36
	if(!BoxType::intersect(p,dir))
27
		return false;
37
		return false;
28
 
38
 
29
	float tminl=1.0e33f, tminr=1.0e33f;
39
	float tminl=1e33, tminr=1e33;
30
	bool li = left->intersect(p,dir,tminl);
40
	bool li = left->intersect(p,dir,tminl);
31
	bool ri = right->intersect(p,dir,tminr);
41
	bool ri = right->intersect(p,dir,tminr);
32
	if(li||ri)
42
	if(li||ri)
33
		{
43
		{
34
			tmin = min(tminl,tminr);
44
			tmin = min(tminl,tminr);
35
			return true;
45
			return true;
36
		}
46
		}
37
	return false;
47
	return false;
38
}
48
}
39
 
49
 
40
 
-
 
41
 template BoundingINode<AABox>;
50
template BoundingINode<AABox>;
42
template BoundingINode<OBox>;
51
template BoundingINode<OBox>;
43
 
52
 
44
}
-
 
45
 
53
}
-
 
54