Mario Kart 64
Loading...
Searching...
No Matches
math_util.h File Reference
#include <PR/ultratypes.h>
Include dependency graph for math_util.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define sqr(x)   ((x) * (x))
 

Functions

double fabs (double x)
 
void func_802B5794 (Mat4, Vec3f, Vec3f)
 
s32 func_802B4F60 (s32, Vec3f, s32, f32, f32)
 
s32 render_set_position (Mat4, s32)
 
f32 func_802B51E8 (Vec3f, Vec3f)
 
s32 get_angle_between_two_vectors (Vec3f, Vec3f)
 
u32 func_802B5258 (Vec3f, Vec3s)
 
void vec3f_set (Vec3f, f32, f32, f32)
 
void vec3s_set (Vec3s, s16, s16, s16)
 
void * vec3f_copy_return (Vec3f, Vec3f)
 
void vec3s_copy (Vec3s, Vec3s)
 
void * vec3f_set_return (Vec3f, f32, f32, f32)
 
void mtxf_copy (Mat4, Mat4)
 
void mtxf_copy_n_element (s32 *, s32 *, s32)
 
void mtxf_identity (Mat4)
 
void add_translate_mat4_vec3f (Mat4, Mat4, Vec3f)
 
void add_translate_mat4_vec3f_lite (Mat4, Mat4, Vec3f)
 
void mtxf_translate (Mat4, Vec3f)
 
void func_802B5564 (Mat4, u16 *, f32, f32, f32, f32, f32)
 
void mtxf_rotate_x (Mat4, s16)
 
void mtxf_rotate_y (Mat4, s16)
 
void mtxf_s16_rotate_z (Mat4, s16)
 
void func_802B5B14 (Vec3f b, Vec3s rotate)
 
void func_802B5CAC (s16, s16, Vec3f)
 
void func_802B5D30 (s16, s16, s32)
 
void func_802B5D64 (Lights1 *, s16, s16, s32)
 
void mtxf_scale (Mat4, f32)
 
void mtxf_pos_rotation_xyz (Mat4, Vec3f, Vec3s)
 
void mtxf_translate_vec3f_mat3 (Vec3f, Mat3)
 
void mtxf_translate_vec3f_mat4 (Vec3f, Mat4)
 
void func_802B64C4 (Vec3f, s16)
 
void calculate_orientation_matrix (Mat3, f32, f32, f32, s16)
 
void calculate_rotation_matrix (Mat3, s16, f32, f32, f32)
 
void func_802B6BC0 (Mat4, s16, f32, f32, f32)
 
void func_802B6D58 (Mat4, Vec3f, Vec3f)
 
void mtxf_multiplication (Mat4, Mat4, Mat4)
 
void mtxf_to_mtx (Mtx *, Mat4)
 
u16 atan2_lookup (f32, f32)
 
u16 atan2s (f32, f32)
 
f32 atan2f (f32, f32)
 
s16 func_802B7C40 (f32)
 
s16 func_802B7CA8 (f32)
 
f32 calculate_vector_angle_xy (f32)
 
u16 random_u16 (void)
 
u16 random_int (u16)
 
s16 func_802B7F34 (f32, f32, f32, f32)
 
void func_802B7F7C (Vec3f, Vec3f, Vec3s)
 
f32 sins (u16)
 
f32 coss (u16)
 
s32 is_visible_between_angle (u16, u16, u16)
 
f32 is_within_render_distance (Vec3f, Vec3f, u16, f32, f32, f32)
 

Variables

s32 D_802B91C0 []
 
Vec3f D_802B91C8
 

Macro Definition Documentation

◆ sqr

#define sqr ( x)    ((x) * (x))

Function Documentation

◆ add_translate_mat4_vec3f()

void add_translate_mat4_vec3f ( Mat4 mat,
Mat4 dest,
Vec3f pos )
Here is the caller graph for this function:

◆ add_translate_mat4_vec3f_lite()

void add_translate_mat4_vec3f_lite ( Mat4 mat,
Mat4 dest,
Vec3f pos )

◆ atan2_lookup()

u16 atan2_lookup ( f32 y,
f32 x )

Comment from sm64 unverified. mk64 verison is modified

Helper function for atan2s. Does a look up of the arctangent of y/x assuming the resulting angle is in range [0, 0x2000] (1/8 of a circle).

Here is the caller graph for this function:

◆ atan2f()

f32 atan2f ( f32 arg0,
f32 arg1 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ atan2s()

u16 atan2s ( f32 x,
f32 y )

Compute the angle from (0, 0) to (x, y) as a u16. Given that terrain is in the xz-plane, this is commonly called with (z, x) to get a yaw angle. sm64 but x, y swapped and returns u16.

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

◆ calculate_orientation_matrix()

void calculate_orientation_matrix ( Mat3 dest,
f32 arg1,
f32 arg2,
f32 arg3,
s16 rotationAngle )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_rotation_matrix()

void calculate_rotation_matrix ( Mat3 destMatrix,
s16 rotationAngle,
f32 rotationX,
f32 rotationY,
f32 rotationZ )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_vector_angle_xy()

f32 calculate_vector_angle_xy ( f32 vectorX)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ coss()

f32 coss ( u16 arg0)

◆ fabs()

double fabs ( double x)
Here is the caller graph for this function:

◆ func_802B4F60()

s32 func_802B4F60 ( s32 ,
Vec3f ,
s32 ,
f32 ,
f32  )

◆ func_802B51E8()

f32 func_802B51E8 ( Vec3f arg0,
Vec3f arg1 )
Here is the caller graph for this function:

◆ func_802B5258()

u32 func_802B5258 ( Vec3f arg0,
Vec3s arg1 )
Here is the call graph for this function:

◆ func_802B5564()

void func_802B5564 ( Mat4 arg0,
u16 * arg1,
f32 arg2,
f32 arg3,
f32 arg4,
f32 arg5,
f32 arg6 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B5794()

void func_802B5794 ( Mat4 mtx,
Vec3f from,
Vec3f to )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B5B14()

void func_802B5B14 ( Vec3f b,
Vec3s rotate )
Here is the call graph for this function:

◆ func_802B5CAC()

void func_802B5CAC ( s16 arg0,
s16 arg1,
Vec3f arg2 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B5D30()

void func_802B5D30 ( s16 arg0,
s16 arg1,
s32 arg2 )
Here is the call graph for this function:

◆ func_802B5D64()

void func_802B5D64 ( Lights1 * addr,
s16 arg1,
s16 arg2,
s32 arg3 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B64C4()

void func_802B64C4 ( Vec3f arg0,
s16 arg1 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B6BC0()

void func_802B6BC0 ( Mat4 arg0,
s16 arg1,
f32 arg2,
f32 arg3,
f32 arg4 )
Here is the call graph for this function:

◆ func_802B6D58()

void func_802B6D58 ( Mat4 arg0,
Vec3f arg1,
Vec3f arg2 )
Here is the call graph for this function:

◆ func_802B7C40()

s16 func_802B7C40 ( f32 arg0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B7CA8()

s16 func_802B7CA8 ( f32 arg0)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B7F34()

s16 func_802B7F34 ( f32 arg0,
f32 arg1,
f32 arg2,
f32 arg3 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ func_802B7F7C()

void func_802B7F7C ( Vec3f arg0,
Vec3f arg1,
Vec3s dest )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_angle_between_two_vectors()

s32 get_angle_between_two_vectors ( Vec3f arg0,
Vec3f arg1 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_visible_between_angle()

s32 is_visible_between_angle ( u16 arg0,
u16 arg1,
u16 arg2 )
Here is the caller graph for this function:

◆ is_within_render_distance()

f32 is_within_render_distance ( Vec3f cameraPos,
Vec3f objectPos,
u16 orientationY,
f32 minDistance,
f32 fov,
f32 maxDistance )

Determines whether an object is within the render distance of a camera.

Parameters
cameraPosThe position of the camera in 3D space.
objectPosThe position of the object in 3D space.
orientationYThe orientation angle of the object around the Y-axis.
minDistanceThe minimum distance at which the object is considered within render distance.
fovThe field of view (FOV) of the camera.
maxDistanceThe maximum render distance.
Returns
The distance between the camera and the object if it's within render distance, or -1.0f if it exceeds the render distance.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtxf_copy()

void mtxf_copy ( Mat4 mat1,
Mat4 mat2 )

◆ mtxf_copy_n_element()

void mtxf_copy_n_element ( s32 * dest,
s32 * src,
s32 n )
Here is the caller graph for this function:

◆ mtxf_identity()

void mtxf_identity ( Mat4 mtx)
Here is the caller graph for this function:

◆ mtxf_multiplication()

void mtxf_multiplication ( Mat4 dest,
Mat4 mat1,
Mat4 mat2 )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtxf_pos_rotation_xyz()

void mtxf_pos_rotation_xyz ( Mat4 out,
Vec3f pos,
Vec3s orientation )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtxf_rotate_x()

void mtxf_rotate_x ( Mat4 mat,
s16 angle )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtxf_rotate_y()

void mtxf_rotate_y ( Mat4 mat,
s16 angle )
Here is the call graph for this function:

◆ mtxf_s16_rotate_z()

void mtxf_s16_rotate_z ( Mat4 mat,
s16 angle )
Here is the call graph for this function:

◆ mtxf_scale()

void mtxf_scale ( Mat4 mat,
f32 coef )
Here is the caller graph for this function:

◆ mtxf_to_mtx()

void mtxf_to_mtx ( Mtx * dest,
Mat4 src )

Convert float matrix 'src' to fixed point matrix 'dest'. The float matrix may not contain entries larger than 65536 or the console crashes. The fixed point matrix has entries with a 16-bit integer part, so the floating point numbers are multiplied by 2^16 before being cast to a s32 integer. If this doesn't fit, the N64 and iQue consoles will throw an exception. On Wii and Wii U Virtual Console the value will simply be clamped and no crashes occur.

float-to-integer conversion responsible for PU crashes

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

◆ mtxf_translate()

void mtxf_translate ( Mat4 dest,
Vec3f b )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mtxf_translate_vec3f_mat3()

void mtxf_translate_vec3f_mat3 ( Vec3f pos,
Mat3 mat )
Here is the caller graph for this function:

◆ mtxf_translate_vec3f_mat4()

void mtxf_translate_vec3f_mat4 ( Vec3f pos,
Mat4 mat )
Here is the caller graph for this function:

◆ random_int()

u16 random_int ( u16 arg0)
Here is the call graph for this function:

◆ random_u16()

u16 random_u16 ( void )
Here is the caller graph for this function:

◆ render_set_position()

s32 render_set_position ( Mat4 arg0,
s32 arg1 )

Inserts matrix into the rsp. Position, rotation and mode of where to render the next object and check number of object already render Note that gMatrixObjectCount gets reset at the beginning of the game loop. So no cleanup needs to be performed.

Here is the call graph for this function:

◆ sins()

f32 sins ( u16 arg0)

◆ vec3f_copy_return()

void * vec3f_copy_return ( Vec3f dest,
Vec3f src )
Warning
function returns address of local variable
Here is the caller graph for this function:

◆ vec3f_set()

void vec3f_set ( Vec3f arg0,
f32 arg1,
f32 arg2,
f32 arg3 )
Here is the caller graph for this function:

◆ vec3f_set_return()

void * vec3f_set_return ( Vec3f dest,
f32 x,
f32 y,
f32 z )

◆ vec3s_copy()

void vec3s_copy ( Vec3s dest,
Vec3s src )
Here is the caller graph for this function:

◆ vec3s_set()

void vec3s_set ( Vec3s arg0,
s16 arg1,
s16 arg2,
s16 arg3 )
Here is the caller graph for this function:

Variable Documentation

◆ D_802B91C0

s32 D_802B91C0[]
extern

◆ D_802B91C8

Vec3f D_802B91C8
extern