Feedback

C++ - Kartesische zu Polarkoordinaten

Veröffentlicht von am 3/20/2008
(1 Bewertungen)
Kartesische zu Polarkoordinaten
float32 CalculateRotation(const vector2f& vPoint)
{
	if(Math::compare(vPoint.y, 0.0f, Math::Math::fEpsilon7))
	{
		if (vPoint.x >= 0.0f)
		{
			return 0.0f;
		} 
		else
		{
			return Math::Math::fPI;
		}
	}

	if(Math::compare(vPoint.x, 0.0f, Math::Math::fEpsilon7))
	{
		if (vPoint.y >= 0.0f)
		{
			return Math::Math::fPI/2.0f;
		} 
		else
		{
			return 3.0f/2.0f * Math::Math::fPI;
		}
	}

	//float rad = 0.0f;
	//if(!Math::compare(vPoint.y, 0.0f, Math::Math::fEpsilon7))
	float rad = std::atan(abs(vPoint.x / vPoint.y));

	if (vPoint.x >= 0)
	{
		if(vPoint.y < 0)
		{
			// 4. Quadrant
			rad += 3.0f/2.0f * Math::Math::fPI;
		}
	} 
	else
	{
		if(vPoint.y >= 0)
		{
			// 2. Quadrant
			rad += Math::Math::fPI / 2.0f;
		}
		else
		{
			// 3. Quadrant
			rad += Math::Math::fPI;
		}
	}
	
	return rad;
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!