view LightClone/Source/Core.cpp @ 0:7e3a0ae9c016

Initial commit
author koryspansel <koryspansel@bendbroadband.com>
date Wed, 07 Sep 2011 12:36:37 -0700
parents
children 88b5c4d51c68
line wrap: on
line source

/*
 * Core
 */

#include "Core.h"

/*
 * InterpolateDirection
 */
float InterpolateDirection(uint32 nStart, uint32 nEnd, float fParameter)
{
	//A+t*(B-A)
	if(nStart == Direction_North)
	{
		if(nEnd == Direction_East)
		{
			//-90 -> 0
			return -(D3DX_PI / 2.0f) * (1.0f - fParameter) + 0.0f * fParameter;
			//return (-(D3DX_PI / 2.0f)) + fParameter * ((0.0f) - -(D3DX_PI / 2.0f)));
		}
		else

		if(nEnd == Direction_West)
		{
			//-90 -> -180
			return -(D3DX_PI / 2.0f) * (1.0f - fParameter) - D3DX_PI * fParameter;
			//return (A) + fParameter * ((B) - (A));
			//return (-(D3DX_PI / 2.0f)) + fParameter * ((-D3DX_PI) - (-(D3DX_PI / 2.0f)));
		}
	}
	else

	if(nStart == Direction_East)
	{
		if(nEnd == Direction_North)
		{
			//0 -> -90
			return 0.0f * (1.0f - fParameter) - (D3DX_PI / 2.0f) * fParameter;
		}
		else

		if(nEnd == Direction_South)
		{
			//-360 -> -270
			return -2.0f * D3DX_PI * (1.0f - fParameter) - (3.0f * D3DX_PI / 2.0f) * fParameter;
		}
	}
	else

	if(nStart == Direction_South)
	{
		if(nEnd == Direction_East)
		{
			//-270 -> -360
			return -(3.0f * D3DX_PI / 2.0f) * (1.0f - fParameter) - 2.0f * D3DX_PI * fParameter;
		}
		else

		if(nEnd == Direction_West)
		{
			//-270 -> -180
			return -(3.0f * D3DX_PI / 2.0f) * (1.0f - fParameter) - (2.0f * D3DX_PI / 2.0f) * fParameter;
		}
	}
	else

	if(nStart == Direction_West)
	{
		if(nEnd == Direction_North)
		{
			//-180 -> -90
			return -(2.0f * D3DX_PI / 2.0f) * (1.0f - fParameter) - (1.0f * D3DX_PI / 2.0f) * fParameter;
		}
		else

		if(nEnd == Direction_South)
		{
			//-180 -> -270
			return -(2.0f * D3DX_PI / 2.0f) * (1.0f - fParameter) - (3.0f * D3DX_PI / 2.0f) * fParameter;
		}
	}

	return 0.0f;
}