コード例 #1
0
ファイル: simplemap.cpp プロジェクト: AndreaCensi/csm
	bool Environment::ray_tracing(const double p[2], const double direction,  double& out_distance, double &out_alpha, int*stuff_id) const {
	
		int champion = -1;
		double champion_range, champion_alpha;
		for(size_t i=0;i<stuff.size();i++) {
			Stuff * s = stuff.at(i);
			
			double range, alpha;
			if(s->ray_tracing(p,direction,range,alpha)){
				if(champion==-1 || range<champion_range) {
					champion = i;
					champion_range = range;
					champion_alpha = alpha;
				}
			}
			
		}
		
		if(champion != -1) {
			*stuff_id = champion;
			out_distance = champion_range;
			out_alpha = champion_alpha;
		
			return true;
		} else {
			return false;
		}
	}