force.cpp

来自「c++程序」· C++ 代码 · 共 110 行

CPP
110
字号
// Force.cpp: Implementierung der Klasse CForce.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Force.h"

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////

CForce::CForce()
{
	m_Vector[x] = 0.0f;
	m_Vector[y] = 0.0f;
	m_Vector[z] = 0.0f;
}

CForce::~CForce()
{

}

float CForce::GetForceVectorLength()
{
	// Return length of force vector

	return (float) sqrt(m_Vector[x] * m_Vector[x] +
				        m_Vector[y] * m_Vector[y] +
				        m_Vector[z] * m_Vector[z]);
}

CForce CForce::operator+ (const CForce &rhs)
{
	// Add the two force vectors

	CForce cNewForce;

	cNewForce[x] = m_Vector[x] + rhs[x];
	cNewForce[y] = m_Vector[y] + rhs[y];
	cNewForce[z] = m_Vector[z] + rhs[z];

	return cNewForce;
}

float &CForce::operator[] (unsigned short iOffset)
{
	// Allow direct access to the three vector components

	if (iOffset <= 2)
		return m_Vector[iOffset];
	else
		return m_Vector[z];
}

float CForce::operator[] (unsigned short iOffset) const
{
	// Allow direct access to the three vector components

	if (iOffset <= 2)
		return m_Vector[iOffset];
	else
		return -1.0f;
}

void CForce::operator+= (const CForce &rhs)
{
	// Add the passed force vectors to this one

	m_Vector[x] = m_Vector[x] + rhs[x];
	m_Vector[y] = m_Vector[y] + rhs[y];
	m_Vector[z] = m_Vector[z] + rhs[z];
}

void CForce::ResetForce()
{
	// Reset the motion vector
	
	m_Vector[x] = 0.0f;
	m_Vector[y] = 0.0f;
	m_Vector[z] = 0.0f;
}

void CForce::SlowDown(float fAmount)
{
	// Shortens the movement vector

	m_Vector[x] /= 1.0f + fAmount;
	m_Vector[y] /= 1.0f + fAmount;
	m_Vector[z] /= 1.0f + fAmount;
}

void CForce::SetVectorLength(float fLength)
{
	// Sets the movement vector to a given length

	// Get current vector length
	float fCurVectorLength = GetForceVectorLength();

	// Don't increase length of the vector
	if (fCurVectorLength < fLength)
		return;

	// Shorten vector
	float fDivisor = fCurVectorLength / fLength;
	m_Vector[x] /= fDivisor;
	m_Vector[y] /= fDivisor;
	m_Vector[z] /= fDivisor;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?