⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 force.cpp

📁 c++程序
💻 CPP
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -