mirror of
https://github.com/thestk/stk
synced 2026-01-11 20:11:52 +00:00
72 lines
1.8 KiB
C++
72 lines
1.8 KiB
C++
/***************************************************/
|
|
/*! \class Sphere
|
|
\brief STK sphere class.
|
|
|
|
This class implements a spherical ball with
|
|
radius, mass, position, and velocity parameters.
|
|
|
|
by Perry R. Cook, 1995 - 2004.
|
|
*/
|
|
/***************************************************/
|
|
|
|
#ifndef STK_SPHERE_H
|
|
#define STK_SPHERE_H
|
|
|
|
#include "Stk.h"
|
|
#include "Vector3D.h"
|
|
|
|
class Sphere : public Stk
|
|
{
|
|
public:
|
|
//! Constructor taking an initial radius value.
|
|
Sphere(StkFloat radius = 1.0 );
|
|
|
|
//! Class destructor.
|
|
~Sphere();
|
|
|
|
//! Set the 3D center position of the sphere.
|
|
void setPosition(StkFloat x, StkFloat y, StkFloat z);
|
|
|
|
//! Set the 3D velocity of the sphere.
|
|
void setVelocity(StkFloat x, StkFloat y, StkFloat z);
|
|
|
|
//! Set the radius of the sphere.
|
|
void setRadius(StkFloat radius);
|
|
|
|
//! Set the mass of the sphere.
|
|
void setMass(StkFloat mass);
|
|
|
|
//! Get the current position of the sphere as a 3D vector.
|
|
Vector3D* getPosition();
|
|
|
|
//! Get the relative position of the given point to the sphere as a 3D vector.
|
|
Vector3D* getRelativePosition(Vector3D *position);
|
|
|
|
//! Set the velcoity of the sphere as a 3D vector.
|
|
StkFloat getVelocity(Vector3D* velocity);
|
|
|
|
//! Returns the distance from the sphere boundary to the given position (< 0 if inside).
|
|
StkFloat isInside(Vector3D *position);
|
|
|
|
//! Get the current sphere radius.
|
|
StkFloat getRadius();
|
|
|
|
//! Get the current sphere mass.
|
|
StkFloat getMass();
|
|
|
|
//! Increase the current sphere velocity by the given 3D components.
|
|
void addVelocity(StkFloat x, StkFloat y, StkFloat z);
|
|
|
|
//! Move the sphere for the given time increment.
|
|
void tick(StkFloat timeIncrement);
|
|
|
|
private:
|
|
Vector3D position_;
|
|
Vector3D velocity_;
|
|
Vector3D workingVector_;
|
|
StkFloat radius_;
|
|
StkFloat mass_;
|
|
};
|
|
|
|
#endif
|