Luanti 5.11.0-dev
 
Loading...
Searching...
No Matches
numeric.h File Reference
#include "basic_macros.h"
#include "constants.h"
#include "irrlichttypes.h"
#include "irr_v2d.h"
#include "irr_v3d.h"
#include "irr_aabb3d.h"
#include "SColor.h"
#include <matrix4.h>
#include <cmath>
#include <algorithm>
+ Include dependency graph for numeric.h:

Go to the source code of this file.

Classes

struct  MeshGrid
 Describes a grid with given step, oirginating at (0,0,0) More...
 
struct  MyRandGenerator
 
class  IntervalLimiter
 

Macros

#define rangelim(d, min, max)   ((d) < (min) ? (min) : ((d) > (max) ? (max) : (d)))
 
#define myfloor(x)   ((x) < 0.0 ? (int)(x) - 1 : (int)(x))
 
#define SWAP(t, x, y)
 
#define MYRAND_RANGE   0xffffffff
 

Functions

s16 getContainerPos (s16 p, s16 d)
 
v2s16 getContainerPos (v2s16 p, s16 d)
 
v3s16 getContainerPos (v3s16 p, s16 d)
 
v2s16 getContainerPos (v2s16 p, v2s16 d)
 
v3s16 getContainerPos (v3s16 p, v3s16 d)
 
void getContainerPosWithOffset (s16 p, s16 d, s16 &container, s16 &offset)
 
void getContainerPosWithOffset (const v2s16 &p, s16 d, v2s16 &container, v2s16 &offset)
 
void getContainerPosWithOffset (const v3s16 &p, s16 d, v3s16 &container, v3s16 &offset)
 
bool isInArea (v3s16 p, s16 d)
 
bool isInArea (v2s16 p, s16 d)
 
bool isInArea (v3s16 p, v3s16 d)
 
void sortBoxVerticies (v3s16 &p1, v3s16 &p2)
 
v3s16 componentwise_min (const v3s16 &a, const v3s16 &b)
 
v3s16 componentwise_max (const v3s16 &a, const v3s16 &b)
 
float modulo360f (float f)
 Returns f wrapped to the range [-360, 360].
 
float wrapDegrees_0_360 (float f)
 Returns f wrapped to the range [0, 360].
 
v3f wrapDegrees_0_360_v3f (v3f v)
 Returns v3f wrapped to the range [0, 360].
 
float wrapDegrees_180 (float f)
 Returns f wrapped to the range [-180, 180].
 
u32 myrand ()
 
void mysrand (unsigned int seed)
 
void myrand_bytes (void *out, size_t len)
 
int myrand_range (int min, int max)
 
float myrand_range (float min, float max)
 
float myrand_float ()
 
u32 get_bits (u32 x, u32 pos, u32 len)
 
void set_bits (u32 *x, u32 pos, u32 len, u32 val)
 
u32 calc_parity (u32 v)
 
u64 murmur_hash_64_ua (const void *key, int len, unsigned int seed)
 
bool isBlockInSight (v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 camera_fov, f32 range, f32 *distance_ptr=NULL)
 
s16 adjustDist (s16 dist, float zoom_fov)
 
s32 myround (f32 f)
 
constexpr f32 sqr (f32 f)
 
v3s16 floatToInt (v3f p, f32 d)
 
v3s16 doubleToInt (v3d p, double d)
 
v3f intToFloat (v3s16 p, f32 d)
 
aabb3f getNodeBox (v3s16 p, float d)
 
void paging (u32 length, u32 page, u32 pagecount, u32 &minindex, u32 &maxindex)
 
float cycle_shift (float value, float by=0, float max=1)
 
bool is_power_of_two (u32 n)
 
u32 npot2 (u32 orig)
 
template<typename T >
unsigned wrappedDifference (T a, T b, const T maximum)
 
template<typename T >
void wrappedApproachShortest (T &current, const T target, const T stepsize, const T maximum)
 
void setPitchYawRollRad (core::matrix4 &m, v3f rot)
 
void setPitchYawRoll (core::matrix4 &m, v3f rot)
 
v3f getPitchYawRollRad (const core::matrix4 &m)
 
v3f getPitchYawRoll (const core::matrix4 &m)
 
irr::video::SColor multiplyColorValue (const irr::video::SColor &color, float mod)
 
template<typename T >
numericAbsolute (T v)
 
template<typename T >
numericSign (T v)
 
v3f vecAbsolute (v3f v)
 
v3f vecSign (v3f v)
 

Variables

static constexpr const f32 BLOCK_MAX_RADIUS = 0.866025403784f * MAP_BLOCKSIZE * BS
 

Macro Definition Documentation

◆ myfloor

#define myfloor ( x)    ((x) < 0.0 ? (int)(x) - 1 : (int)(x))

◆ MYRAND_RANGE

#define MYRAND_RANGE   0xffffffff

Referenced by MyRandGenerator::max().

◆ rangelim

#define rangelim ( d,
min,
max )   ((d) < (min) ? (min) : ((d) > (max) ? (max) : (d)))

Referenced by EmergeManager::EmergeManager(), GUIChatConsole::GUIChatConsole(), Hud::Hud(), MeshUpdateManager::MeshUpdateManager(), MeshUpdateWorkerThread::MeshUpdateWorkerThread(), ServerMap::ServerMap(), Sky::Sky(), Camera::addArmInertia(), ChatBackend::applySettings(), MapgenV6::baseTerrainLevel(), MapgenV7::baseTerrainLevelAtPoint(), MapgenV7::baseTerrainLevelFromMap(), ServerMap::blockpos_over_mapgen_limit(), collisionMoveSimple(), ClientLauncher::config_guienv(), RenderingEngine::draw_load_screen(), Hud::drawBlockBounds(), Map::forEachNodeInArea(), get_mapgen_edges(), Settings::getFloat(), getHitParams(), getInteriorLight(), MapblockMeshGenerator::getLiquidNeighborhood(), RemoteClient::GetNextBlocks(), Server::getProtocolVersionMin(), getSmoothLightCombined(), Game::handleClientEvent_PlayerDamage(), Game::handleClientEvent_SetSky(), imageScaleNNAA(), GameUI::init(), FontEngine::initFont(), ObjectRef::l_set_eye_offset(), ObjectRef::l_set_lighting(), ObjectRef::l_set_minimap_modes(), ObjectRef::l_set_sky(), CavesRandomWalk::makeCave(), CavesV6::makeCave(), LocalPlayer::move(), LocalPlayer::old_move(), GUITable::OnEvent(), JoystickController::onJoystickConnect(), ParsedText::parseTag(), read_item_definition(), read_object_properties(), MapgenParams::readParams(), Clouds::readSettings(), FontEngine::readSettings(), Game::readSettings(), Server::SendBlockNoLock(), ToolCapabilities::serialize(), Sky::setBodyOrbitTilt(), PlayerSAO::setBreath(), LuaEntitySAO::setHP(), PlayerSAO::setHP(), con::Channel::setWindowSize(), sound_volume_control(), Camera::update(), Sky::update(), and Game::updateCameraOrientation().

◆ SWAP

#define SWAP ( t,
x,
y )

Function Documentation

◆ adjustDist()

s16 adjustDist ( s16 dist,
float zoom_fov )

References adjustDist().

+ Here is the call graph for this function:

◆ calc_parity()

u32 calc_parity ( u32 v)
inline

Referenced by ObjDefManager::createHandle(), and ObjDefManager::decodeHandle().

+ Here is the caller graph for this function:

◆ componentwise_max()

v3s16 componentwise_max ( const v3s16 & a,
const v3s16 & b )
inline

References MYMAX.

Referenced by MinimapUpdateThread::getMap().

+ Here is the caller graph for this function:

◆ componentwise_min()

v3s16 componentwise_min ( const v3s16 & a,
const v3s16 & b )
inline

References MYMIN.

Referenced by MinimapUpdateThread::getMap().

+ Here is the caller graph for this function:

◆ cycle_shift()

float cycle_shift ( float value,
float by = 0,
float max = 1 )
inline

◆ doubleToInt()

v3s16 doubleToInt ( v3d p,
double d )
inline

References p().

Referenced by check_v3s16(), ModApiEnv::l_get_node_raw(), and read_v3s16().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ floatToInt()

v3s16 floatToInt ( v3f p,
f32 d )
inline

References p().

Referenced by SmokePuffCSO::SmokePuffCSO(), voxalgo::VoxelLineIterator::VoxelLineIterator(), ServerEnvironment::addActiveObjectRaw(), collision_check_intersection(), collisionMoveSimple(), Environment::continueRaycast(), Client::CSMClampPos(), Client::CSMClampRadius(), Client::CSMGetNode(), ServerEnvironment::deactivateFarObjects(), ClientMap::getBackgroundBrightness(), LuaEntitySAO::getDescription(), LocalPlayer::getFootstepNodePos(), GenericCAO::getLightPosition(), LocalPlayer::getLightPosition(), RemoteClient::GetNextBlocks(), getVisibleBrightness(), LocalPlayer::handleAutojump(), Map::isOccluded(), LocalPlayer::move(), Game::nodePlacement(), LocalPlayer::old_move(), ClientMap::renderPostFx(), Server::sendMetadataChanged(), GenericCAO::step(), PlayerSAO::step(), TestSAO::testActivate(), TestSAO::testNotSaved(), TestSAO::testStaticSave(), TestSAO::testStaticToFalse(), TestSAO::testStaticToTrue(), TestVoxelAlgorithms::testVoxelLineIterator(), ClientMap::touchMapBlocks(), ActiveBlockList::update(), Camera::update(), Minimap::updateActiveMarkers(), ClientMap::updateCamera(), ClientMap::updateDrawList(), Game::updateFrame(), Game::updatePointedThing(), and LocalPlayer::updateSneakNode().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_bits()

u32 get_bits ( u32 x,
u32 pos,
u32 len )
inline

Referenced by ObjDefManager::decodeHandle().

+ Here is the caller graph for this function:

◆ getContainerPos() [1/5]

s16 getContainerPos ( s16 p,
s16 d )
inline

References p().

Referenced by RollbackAction::applyRevert(), AreaStore::getAreasForPos(), getContainerPos(), getContainerPos(), getContainerPos(), getContainerPos(), EmergeManager::getContainingChunk(), getNodeBlockPos(), ModApiEnv::l_fix_light(), ClientMap::updateCamera(), and ClientMap::updateDrawList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getContainerPos() [2/5]

v2s16 getContainerPos ( v2s16 p,
s16 d )
inline

References getContainerPos(), and p().

+ Here is the call graph for this function:

◆ getContainerPos() [3/5]

v2s16 getContainerPos ( v2s16 p,
v2s16 d )
inline

References getContainerPos(), and p().

+ Here is the call graph for this function:

◆ getContainerPos() [4/5]

v3s16 getContainerPos ( v3s16 p,
s16 d )
inline

References getContainerPos(), and p().

+ Here is the call graph for this function:

◆ getContainerPos() [5/5]

v3s16 getContainerPos ( v3s16 p,
v3s16 d )
inline

References getContainerPos(), and p().

+ Here is the call graph for this function:

◆ getContainerPosWithOffset() [1/3]

void getContainerPosWithOffset ( const v2s16 & p,
s16 d,
v2s16 & container,
v2s16 & offset )
inline

References getContainerPosWithOffset(), and p().

+ Here is the call graph for this function:

◆ getContainerPosWithOffset() [2/3]

void getContainerPosWithOffset ( const v3s16 & p,
s16 d,
v3s16 & container,
v3s16 & offset )
inline

References getContainerPosWithOffset(), and p().

+ Here is the call graph for this function:

◆ getContainerPosWithOffset() [3/3]

void getContainerPosWithOffset ( s16 p,
s16 d,
s16 & container,
s16 & offset )
inline

References p().

Referenced by getContainerPosWithOffset(), getContainerPosWithOffset(), and getNodeBlockPosWithOffset().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNodeBox()

aabb3f getNodeBox ( v3s16 p,
float d )
inline

References p().

Referenced by add_area_node_boxes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPitchYawRoll()

v3f getPitchYawRoll ( const core::matrix4 & m)
inline

References getPitchYawRollRad().

Referenced by roundTripsDeg(), and TestUtilities::testEulerConversion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPitchYawRollRad()

v3f getPitchYawRollRad ( const core::matrix4 & m)

Referenced by getPitchYawRoll(), and TestUtilities::testEulerConversion().

+ Here is the caller graph for this function:

◆ intToFloat()

v3f intToFloat ( v3s16 p,
f32 d )
inline

◆ is_power_of_two()

bool is_power_of_two ( u32 n)
inline

Referenced by ExtrusionMeshCache::create(), and TestUtilities::testIsPowerOfTwo().

+ Here is the caller graph for this function:

◆ isBlockInSight()

bool isBlockInSight ( v3s16 blockpos_b,
v3f camera_pos,
v3f camera_dir,
f32 camera_fov,
f32 range,
f32 * distance_ptr = NULL )

References BLOCK_MAX_RADIUS, BS, MAP_BLOCKSIZE, and MYMAX.

Referenced by fillViewConeBlock(), RemoteClient::GetNextBlocks(), and TestUtilities::testIsBlockInSight().

+ Here is the caller graph for this function:

◆ isInArea() [1/3]

bool isInArea ( v2s16 p,
s16 d )
inline

References p().

+ Here is the call graph for this function:

◆ isInArea() [2/3]

bool isInArea ( v3s16 p,
s16 d )
inline

References p().

+ Here is the call graph for this function:

◆ isInArea() [3/3]

bool isInArea ( v3s16 p,
v3s16 d )
inline

References p().

+ Here is the call graph for this function:

◆ modulo360f()

float modulo360f ( float f)
inline

Returns f wrapped to the range [-360, 360].

See test.cpp for example cases.

Note
This is also used in cases where degrees wrapped to the range [0, 360] is innapropriate (e.g. pitch needs negative values)

Referenced by Server::process_PlayerPos(), GenericCAO::step(), LuaEntitySAO::step(), TestUtilities::testAngleWrapAround(), wrapDegrees_0_360(), wrapDegrees_0_360_v3f(), and wrapDegrees_180().

+ Here is the caller graph for this function:

◆ multiplyColorValue()

irr::video::SColor multiplyColorValue ( const irr::video::SColor & color,
float mod )
inline

Referenced by GUIButton::setFromStyle().

+ Here is the caller graph for this function:

◆ murmur_hash_64_ua()

u64 murmur_hash_64_ua ( const void * key,
int len,
unsigned int seed )

Referenced by check_field_or_nil(), getHashForString(), ModApiBase::l_deprecated_function(), logOnce(), read_seed(), and script_log_unique().

+ Here is the caller graph for this function:

◆ myrand()

u32 myrand ( )

References g_pcgrand, and PcgRandom::next().

Referenced by Sky::Sky(), ObjDefManager::addRaw(), ScriptApiServer::allocateDynamicMediaCallback(), ISoundManager::allocateId(), ABMHandler::apply(), ImageSource::generateImagePart(), sound::OpenALSoundManager::getLoadedSoundNameFromGroup(), TestBase::getTestTempFile(), MyRandGenerator::operator()(), MapgenV6::placeTreesAndJungleGrass(), RandomInputHandler::Rand(), and UDPSocket::Send().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ myrand_bytes()

void myrand_bytes ( void * out,
size_t len )

References PcgRandom::bytes(), and g_pcgrand.

Referenced by MapgenParams::readParams().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ myrand_float()

float myrand_float ( )

References g_pcgrand, PcgRandom::next(), and U32_MAX.

Referenced by ParticleSpawner::ParticleSpawner(), myrand_range(), ParticleParamTypes::RangedParameter< T >::pickWithin(), and ParticleSpawner::step().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ myrand_range() [1/2]

float myrand_range ( float min,
float max )

References myrand_float().

+ Here is the call graph for this function:

◆ myrand_range() [2/2]

int myrand_range ( int min,
int max )

References g_pcgrand, and PcgRandom::range().

Referenced by ABMWithState::ABMWithState(), ParticleManager::addNodeParticle(), MapBlockMesh::animate(), benchGetObjectsInArea(), ParticleParamTypes::TweenedParameter< T >::blend(), Schematic::blitToVManip(), con::Connection::createPeer(), Server::findSpawnPos(), ClientMap::getBackgroundBrightness(), ParticleManager::getNodeParticleParams(), Map::isBlockOccluded(), ClientLauncher::launch_game(), Schematic::placeOnMap(), Schematic::placeOnVManip(), MapgenV6::placeTreesAndJungleGrass(), and ParticleSpawner::spawnParticle().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ myround()

◆ mysrand()

void mysrand ( unsigned int seed)

References g_pcgrand, and PcgRandom::seed().

Referenced by init_common().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ npot2()

u32 npot2 ( u32 orig)
inline

Referenced by Align2Npot2(), createInventoryCubeImage(), and guiScalingResizeCached().

+ Here is the caller graph for this function:

◆ numericAbsolute()

template<typename T >
T numericAbsolute ( T v)
inline

Referenced by ParticleParamTypes::RangedParameter< T >::pickWithin(), ParticleSpawner::spawnParticle(), and vecAbsolute().

+ Here is the caller graph for this function:

◆ numericSign()

template<typename T >
T numericSign ( T v)
inline

Referenced by ParticleSpawner::spawnParticle(), and vecSign().

+ Here is the caller graph for this function:

◆ paging()

void paging ( u32 length,
u32 page,
u32 pagecount,
u32 & minindex,
u32 & maxindex )
inline

Referenced by Profiler::getPage().

+ Here is the caller graph for this function:

◆ set_bits()

void set_bits ( u32 * x,
u32 pos,
u32 len,
u32 val )
inline

Referenced by ObjDefManager::createHandle(), and ObjDefManager::decodeHandle().

+ Here is the caller graph for this function:

◆ setPitchYawRoll()

void setPitchYawRoll ( core::matrix4 & m,
v3f rot )
inline

References setPitchYawRollRad().

Referenced by UnitSAO::getTotalRotation(), roundTripsDeg(), TestUtilities::testEulerConversion(), and GenericCAO::updateNodePos().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setPitchYawRollRad()

void setPitchYawRollRad ( core::matrix4 & m,
v3f rot )

Referenced by setPitchYawRoll(), and TestUtilities::testEulerConversion().

+ Here is the caller graph for this function:

◆ sortBoxVerticies()

◆ sqr()

f32 sqr ( f32 f)
inlineconstexpr

◆ vecAbsolute()

v3f vecAbsolute ( v3f v)
inline

References numericAbsolute().

Referenced by Particle::step().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vecSign()

v3f vecSign ( v3f v)
inline

References numericSign().

Referenced by Particle::step().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wrapDegrees_0_360()

float wrapDegrees_0_360 ( float f)
inline

Returns f wrapped to the range [0, 360].

References modulo360f().

Referenced by Server::process_PlayerPos(), GenericCAO::step(), LuaEntitySAO::step(), TestUtilities::testAngleWrapAround(), GameUI::update(), Sky::update(), and yawToDirectionString().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wrapDegrees_0_360_v3f()

v3f wrapDegrees_0_360_v3f ( v3f v)
inline

Returns v3f wrapped to the range [0, 360].

References modulo360f().

Referenced by GenericCAO::processInitData(), GenericCAO::processMessage(), and TestUtilities::testWrapDegrees_0_360_v3f().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wrapDegrees_180()

float wrapDegrees_180 ( float f)
inline

Returns f wrapped to the range [-180, 180].

References modulo360f().

Referenced by TestUtilities::testAngleWrapAround(), GameUI::update(), and GenericCAO::updateTexturePos().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wrappedApproachShortest()

template<typename T >
void wrappedApproachShortest ( T & current,
const T target,
const T stepsize,
const T maximum )
inline

Referenced by GenericCAO::step(), LuaEntitySAO::step(), SmoothTranslatorWrapped::translate(), and SmoothTranslatorWrappedv3f::translate().

+ Here is the caller graph for this function:

◆ wrappedDifference()

template<typename T >
unsigned wrappedDifference ( T a,
T b,
const T maximum )
inline

Variable Documentation

◆ BLOCK_MAX_RADIUS

const f32 BLOCK_MAX_RADIUS = 0.866025403784f * MAP_BLOCKSIZE * BS
staticconstexpr

Referenced by isBlockInSight().