Blender  V2.59
Defines | Functions
math_geom.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_utildefines.h"

Go to the source code of this file.

Defines

#define IS_ZERO(x)   ((x>(-DBL_EPSILON) && x<DBL_EPSILON) ? 1 : 0)
#define STD_UV_CONNECT_LIMIT   0.0001f

Functions

void cent_tri_v3 (float cent[3], const float v1[3], const float v2[3], const float v3[3])
void cent_quad_v3 (float cent[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
float normal_tri_v3 (float n[3], const float v1[3], const float v2[3], const float v3[3])
float normal_quad_v3 (float n[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
float area_tri_v2 (const float v1[2], const float v2[2], const float v3[2])
float area_tri_signed_v2 (const float v1[2], const float v2[2], const float v3[2])
float area_quad_v3 (const float v1[3], const float v2[3], const float v3[3], const float v4[3])
float area_tri_v3 (const float v1[3], const float v2[3], const float v3[3])
float area_poly_v3 (int nr, float verts[][3], const float normal[3])
float dist_to_line_v2 (const float v1[2], const float v2[2], const float v3[2])
float dist_to_line_segment_v2 (const float v1[2], const float v2[2], const float v3[2])
void closest_to_line_segment_v3 (float closest[3], const float v1[3], const float v2[3], const float v3[3])
float dist_to_line_segment_v3 (const float v1[3], const float v2[3], const float v3[3])
int isect_line_line_v2_int (const int v1[2], const int v2[2], const int v3[2], const int v4[2])
int isect_line_line_v2 (const float v1[2], const float v2[2], const float v3[2], const float v4[2])
int isect_seg_seg_v2_point (const float v1[2], const float v2[2], const float v3[2], const float v4[2], float vi[2])
int isect_line_sphere_v3 (const float l1[3], const float l2[3], const float sp[3], const float r, float r_p1[3], float r_p2[3])
int isect_line_sphere_v2 (const float l1[2], const float l2[2], const float sp[2], const float r, float r_p1[2], float r_p2[2])
static short IsectLLPt2Df (const float x0, const float y0, const float x1, const float y1, const float x2, const float y2, const float x3, const float y3, float *xi, float *yi)
int isect_point_tri_v2 (const float pt[2], const float v1[2], const float v2[2], const float v3[2])
int isect_point_quad_v2 (const float pt[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
int isect_line_tri_v3 (const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2])
int isect_ray_tri_v3 (const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2])
int isect_ray_plane_v3 (float p1[3], float d[3], float v0[3], float v1[3], float v2[3], float *lambda, int clip)
int isect_ray_tri_epsilon_v3 (const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float uv[2], const float epsilon)
int isect_ray_tri_threshold_v3 (const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *lambda, float *uv, const float threshold)
int isect_line_plane_v3 (float out[3], const float l1[3], const float l2[3], const float plane_co[3], const float plane_no[3], const short no_flip)
static int getLowestRoot (const float a, const float b, const float c, const float maxR, float *root)
int isect_sweeping_sphere_tri_v3 (const float p1[3], const float p2[3], const float radius, const float v0[3], const float v1[3], const float v2[3], float *lambda, float ipoint[3])
int isect_axial_line_tri_v3 (const int axis, const float p1[3], const float p2[3], const float v0[3], const float v1[3], const float v2[3], float *lambda)
int isect_line_line_v3 (const float v1[3], const float v2[3], const float v3[3], const float v4[3], float i1[3], float i2[3])
int isect_line_line_strict_v3 (const float v1[3], const float v2[3], const float v3[3], const float v4[3], float vi[3], float *lambda)
int isect_aabb_aabb_v3 (const float min1[3], const float max1[3], const float min2[3], const float max2[3])
float closest_to_line_v3 (float cp[3], const float p[3], const float l1[3], const float l2[3])
float closest_to_line_v2 (float cp[2], const float p[2], const float l1[2], const float l2[2])
float line_point_factor_v3 (const float p[3], const float l1[3], const float l2[3])
float line_point_factor_v2 (const float p[2], const float l1[2], const float l2[2])
void isect_point_quad_uv_v2 (const float v0[2], const float v1[2], const float v2[2], const float v3[2], const float pt[2], float *uv)
void isect_point_face_uv_v2 (const int isquad, const float v0[2], const float v1[2], const float v2[2], const float v3[2], const float pt[2], float *uv)
int isect_point_tri_v2_int (const int x1, const int y1, const int x2, const int y2, const int a, const int b)
static int point_in_slice (const float p[3], const float v1[3], const float l1[3], const float l2[3])
int isect_point_tri_prism_v3 (const float p[3], const float v1[3], const float v2[3], const float v3[3])
int clip_line_plane (float p1[3], float p2[3], const float plane[4])
void plot_line_v2v2i (const int p1[2], const int p2[2], int(*callback)(int, int, void *), void *userData)
static float tri_signed_area (const float v1[3], const float v2[3], const float v3[3], const int i, const int j)
static int barycentric_weights (const float v1[3], const float v2[3], const float v3[3], const float co[3], const float n[3], float w[3])
void interp_weights_face_v3 (float w[4], const float v1[3], const float v2[3], const float v3[3], const float v4[3], const float co[3])
void barycentric_weights_v2 (const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
void barycentric_transform (float pt_tar[3], float const pt_src[3], const float tri_tar_p1[3], const float tri_tar_p2[3], const float tri_tar_p3[3], const float tri_src_p1[3], const float tri_src_p2[3], const float tri_src_p3[3])
int interp_sparse_array (float *array, int const list_size, const float skipval)
static float mean_value_half_tan (const float v1[3], const float v2[3], const float v3[3])
void interp_weights_poly_v3 (float *w, float v[][3], const int n, const float co[3])
void interp_cubic_v3 (float x[3], float v[3], const float x1[3], const float v1[3], const float x2[3], const float v2[3], const float t)
void resolve_tri_uv (float uv[2], const float st[2], const float st0[2], const float st1[2], const float st2[2])
void resolve_quad_uv (float uv[2], const float st[2], const float st0[2], const float st1[2], const float st2[2], const float st3[2])
void orthographic_m4 (float matrix[][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
void perspective_m4 (float mat[4][4], const float left, const float right, const float bottom, const float top, const float nearClip, const float farClip)
void window_translate_m4 (float winmat[][4], float perspmat[][4], const float x, const float y)
static void i_multmatrix (float icand[][4], float Vm[][4])
void polarview_m4 (float Vm[][4], float dist, float azimuth, float incidence, float twist)
void lookat_m4 (float mat[][4], float vx, float vy, float vz, float px, float py, float pz, float twist)
int box_clip_bounds_m4 (float boundbox[2][3], const float bounds[4], float winmat[4][4])
void box_minmax_bounds_m4 (float min[3], float max[3], float boundbox[2][3], float mat[4][4])
void map_to_tube (float *u, float *v, const float x, const float y, const float z)
void map_to_sphere (float *u, float *v, const float x, const float y, const float z)
void accumulate_vertex_normals (float n1[3], float n2[3], float n3[3], float n4[3], const float f_no[3], const float co1[3], const float co2[3], const float co3[3], const float co4[3])
void sum_or_add_vertex_tangent (void *arena, VertexTangent **vtang, const float tang[3], const float uv[2])
float * find_vertex_tangent (VertexTangent *vtang, const float uv[2])
void tangent_from_uv (float uv1[2], float uv2[2], float uv3[3], float co1[3], float co2[3], float co3[3], float n[3], float tang[3])
static float _det_m3 (float m2[3][3])
void vcloud_estimate_transform (int list_size, float(*pos)[3], float *weight, float(*rpos)[3], float *rweight, float lloc[3], float rloc[3], float lrot[3][3], float lscale[3][3])
static void vec_add_dir (float r[3], const float v1[3], const float v2[3], const float fac)
static int ff_visible_quad (const float p[3], const float n[3], const float v0[3], const float v1[3], const float v2[3], float q0[3], float q1[3], float q2[3], float q3[3])
static void ff_normalize (float n[3])
static float ff_quad_form_factor (const float p[3], const float n[3], const float q0[3], const float q1[3], const float q2[3], const float q3[3])
float form_factor_hemi_poly (float p[3], float n[3], float v1[3], float v2[3], float v3[3], float v4[3])

Detailed Description

Definition in file math_geom.c.


Define Documentation

#define IS_ZERO (   x)    ((x>(-DBL_EPSILON) && x<DBL_EPSILON) ? 1 : 0)

Definition at line 1947 of file math_geom.c.

Referenced by resolve_quad_uv(), and resolve_tri_uv().

#define STD_UV_CONNECT_LIMIT   0.0001f

Definition at line 2309 of file math_geom.c.

Referenced by find_vertex_tangent(), and sum_or_add_vertex_tangent().


Function Documentation

static float _det_m3 ( float  m2[3][3]) [static]

Definition at line 2405 of file math_geom.c.

Referenced by vcloud_estimate_transform().

void accumulate_vertex_normals ( float  n1[3],
float  n2[3],
float  n3[3],
float  n4[3],
const float  f_no[3],
const float  co1[3],
const float  co2[3],
const float  co3[3],
const float  co4[3] 
)
float area_poly_v3 ( int  nr,
float  verts[][3],
const float  normal[3] 
)

Definition at line 132 of file math_geom.c.

References fabs(), fabsf, max, and MAX3().

float area_quad_v3 ( const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3] 
)
float area_tri_signed_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2] 
)

Definition at line 98 of file math_geom.c.

Referenced by barycentric_weights_v2(), and barycentric_weights_v2_persp().

float area_tri_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2] 
)

Definition at line 93 of file math_geom.c.

References fabsf.

Referenced by barycentric_transform(), IsectPT2Df_limit(), M_Geometry_area_tri(), and uv_area().

float area_tri_v3 ( const float  v1[3],
const float  v2[3],
const float  v3[3] 
)
void barycentric_transform ( float  pt_tar[3],
float const  pt_src[3],
const float  tri_tar_p1[3],
const float  tri_tar_p2[3],
const float  tri_tar_p3[3],
const float  tri_src_p1[3],
const float  tri_src_p2[3],
const float  tri_src_p3[3] 
)
static int barycentric_weights ( const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  co[3],
const float  n[3],
float  w[3] 
) [static]

Definition at line 1639 of file math_geom.c.

References fabs(), fabsf, i, and tri_signed_area().

Referenced by interp_weights_face_v3().

void barycentric_weights_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  co[2],
float  w[3] 
)
int box_clip_bounds_m4 ( float  boundbox[2][3],
const float  bounds[4],
float  winmat[4][4] 
)

Definition at line 2169 of file math_geom.c.

References copy_m4_m4(), and mul_m4_v4().

void box_minmax_bounds_m4 ( float  min[3],
float  max[3],
float  boundbox[2][3],
float  mat[4][4] 
)

Definition at line 2206 of file math_geom.c.

References copy_v3_v3(), DO_MINMAX, and mul_m4_v3().

void cent_quad_v3 ( float  cent[3],
const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3] 
)

Definition at line 49 of file math_geom.c.

Referenced by addfacelist(), edge_normal_compare(), face_duplilist(), and recalc_editnormals().

void cent_tri_v3 ( float  cent[3],
const float  v1[3],
const float  v2[3],
const float  v3[3] 
)
int clip_line_plane ( float  p1[3],
float  p2[3],
const float  plane[4] 
)

Definition at line 1518 of file math_geom.c.

References copy_v3_v3(), div, dot_v3v3(), madd_v3_v3v3fl(), sub_v3_v3v3(), and zero_v3().

Referenced by ED_view3d_win_to_segment_clip().

void closest_to_line_segment_v3 ( float  closest[3],
const float  v1[3],
const float  v2[3],
const float  v3[3] 
)
float closest_to_line_v2 ( float  cp[2],
const float  p[2],
const float  l1[2],
const float  l2[2] 
)

Definition at line 1234 of file math_geom.c.

References dot_v2v2(), and sub_v2_v2v2().

Referenced by project_paint_face_init().

float closest_to_line_v3 ( float  cp[3],
const float  p[3],
const float  l1[3],
const float  l2[3] 
)
float dist_to_line_segment_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2] 
)

Definition at line 180 of file math_geom.c.

References sqrt(), and sqrtf.

Referenced by edge_inside_circle(), find_nearest_uv_edge(), findnearestedge__doClosest(), and mesh_rip_edgedist().

float dist_to_line_segment_v3 ( const float  v1[3],
const float  v2[3],
const float  v3[3] 
)

Definition at line 228 of file math_geom.c.

References closest_to_line_segment_v3(), and len_v3v3().

float dist_to_line_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2] 
)

Definition at line 166 of file math_geom.c.

References fabsf, and sqrt().

Referenced by autocalchandlesNurb(), freetypechar_to_vchar(), and testvertexnearedge().

static void ff_normalize ( float  n[3]) [static]

Definition at line 2891 of file math_geom.c.

References simple_enum_gen::d, dot_v3v3(), F, and sqrtf.

Referenced by ff_quad_form_factor().

static float ff_quad_form_factor ( const float  p[3],
const float  n[3],
const float  q0[3],
const float  q1[3],
const float  q2[3],
const float  q3[3] 
) [static]

Definition at line 2906 of file math_geom.c.

References cross_v3_v3v3(), dot_v3v3(), ff_normalize(), M_PI, MAX2, saacosf(), and sub_v3_v3v3().

Referenced by form_factor_hemi_poly().

static int ff_visible_quad ( const float  p[3],
const float  n[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float  q0[3],
float  q1[3],
float  q2[3],
float  q3[3] 
) [static]

Definition at line 2547 of file math_geom.c.

References copy_v3_v3(), dot_v3v3(), KDL::epsilon, fabsf, and vec_add_dir().

Referenced by form_factor_hemi_poly().

float* find_vertex_tangent ( VertexTangent vtang,
const float  uv[2] 
)
float form_factor_hemi_poly ( float  p[3],
float  n[3],
float  v1[3],
float  v2[3],
float  v3[3],
float  v4[3] 
)

Definition at line 2942 of file math_geom.c.

References ff_quad_form_factor(), and ff_visible_quad().

static int getLowestRoot ( const float  a,
const float  b,
const float  c,
const float  maxR,
float *  root 
) [static]

Definition at line 813 of file math_geom.c.

References sqrt(), and SWAP.

Referenced by isect_sweeping_sphere_tri_v3().

static void i_multmatrix ( float  icand[][4],
float  Vm[][4] 
) [static]

Definition at line 2093 of file math_geom.c.

References copy_m4_m4().

Referenced by lookat_m4().

void interp_cubic_v3 ( float  x[3],
float  v[3],
const float  x1[3],
const float  v1[3],
const float  x2[3],
const float  v2[3],
const float  t 
)

Definition at line 1921 of file math_geom.c.

Referenced by psys_interpolate_particle().

int interp_sparse_array ( float *  array,
int const  list_size,
const float  skipval 
)

Definition at line 1797 of file math_geom.c.

References i, MEM_callocN(), and MEM_freeN().

Referenced by gp_stroke_newfrombuffer().

void interp_weights_face_v3 ( float  w[4],
const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3],
const float  co[3] 
)
void interp_weights_poly_v3 ( float *  w,
float  v[][3],
const int  n,
const float  co[3] 
)

Definition at line 1895 of file math_geom.c.

References i, len_v3v3(), and mean_value_half_tan().

int isect_aabb_aabb_v3 ( const float  min1[3],
const float  max1[3],
const float  min2[3],
const float  max2[3] 
)

Definition at line 1213 of file math_geom.c.

Referenced by particle_intersect_dm().

int isect_axial_line_tri_v3 ( const int  axis,
const float  p1[3],
const float  p2[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda 
)

* first a simple bounding box test */

* then a full intersection test */

Definition at line 1047 of file math_geom.c.

References p, and sub_v3_v3v3().

Referenced by distribute_grid().

int isect_line_line_strict_v3 ( const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3],
float  vi[3],
float *  lambda 
)
int isect_line_line_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  v4[2] 
)
int isect_line_line_v2_int ( const int  v1[2],
const int  v2[2],
const int  v3[2],
const int  v4[2] 
)
int isect_line_line_v3 ( const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3],
float  i1[3],
float  i2[3] 
)
int isect_line_plane_v3 ( float  out[3],
const float  l1[3],
const float  l2[3],
const float  plane_co[3],
const float  plane_no[3],
const short  no_flip 
)

Intersect line/plane, optionally treat line as directional (like a ray) with the no_flip argument.

Parameters:
outThe intersection point.
l1The first point of the line.
l2The second point of the line.
plane_coA point on the plane to intersect with.
plane_noThe direction of the plane (does not need to be normalized).
no_flipWhen true, the intersection point will always be from l1 to l2, even if this is not on the plane.

Definition at line 768 of file math_geom.c.

References add_v3_v3v3(), dot(), dot_v3v3(), line_point_factor_v3(), mul_v3_fl(), negate_v3(), normalize_v3(), normalize_v3_v3(), and sub_v3_v3v3().

Referenced by ED_view3d_win_to_3d(), and M_Geometry_intersect_line_plane().

int isect_line_sphere_v2 ( const float  l1[2],
const float  l2[2],
const float  sp[2],
const float  r,
float  r_p1[2],
float  r_p2[2] 
)

Definition at line 424 of file math_geom.c.

References dot_v2v2(), i, madd_v2_v2v2fl(), and sqrt().

Referenced by M_Geometry_intersect_line_sphere_2d().

int isect_line_sphere_v3 ( const float  l1[3],
const float  l2[3],
const float  sp[3],
const float  r,
float  r_p1[3],
float  r_p2[3] 
)

Definition at line 350 of file math_geom.c.

References dot_v3v3(), i, madd_v3_v3v3fl(), and sqrt().

Referenced by M_Geometry_intersect_line_sphere().

int isect_line_tri_v3 ( const float  p1[3],
const float  p2[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda,
float  uv[2] 
)
void isect_point_face_uv_v2 ( const int  isquad,
const float  v0[2],
const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  pt[2],
float *  uv 
)

Definition at line 1357 of file math_geom.c.

References copy_v2_v2(), isect_line_tri_v3(), and isect_point_quad_uv_v2().

void isect_point_quad_uv_v2 ( const float  v0[2],
const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  pt[2],
float *  uv 
)

Definition at line 1263 of file math_geom.c.

References closest_to_line_v3(), IsectLLPt2Df(), and len_v2().

Referenced by isect_point_face_uv_v2().

int isect_point_quad_v2 ( const float  pt[2],
const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  v4[2] 
)
int isect_point_tri_prism_v3 ( const float  p[3],
const float  v1[3],
const float  v2[3],
const float  v3[3] 
)

Definition at line 1510 of file math_geom.c.

References point_in_slice().

Referenced by sb_detect_face_pointCached(), and sb_detect_vertex_collisionCached().

int isect_point_tri_v2 ( const float  pt[2],
const float  v1[2],
const float  v2[2],
const float  v3[2] 
)
int isect_point_tri_v2_int ( const int  x1,
const int  y1,
const int  x2,
const int  y2,
const int  a,
const int  b 
)

Definition at line 1443 of file math_geom.c.

References isect_point_tri_v2(), and p.

int isect_ray_plane_v3 ( float  p1[3],
float  d[3],
float  v0[3],
float  v1[3],
float  v2[3],
float *  lambda,
int  clip 
)

Definition at line 654 of file math_geom.c.

References cross_v3_v3v3(), dot_v3v3(), p, and sub_v3_v3v3().

Referenced by cloth_collision().

int isect_ray_tri_epsilon_v3 ( const float  p1[3],
const float  d[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda,
float  uv[2],
const float  epsilon 
)

Definition at line 684 of file math_geom.c.

References cross_v3_v3v3(), dot_v3v3(), p, and sub_v3_v3v3().

Referenced by ray_face_intersection().

int isect_ray_tri_threshold_v3 ( const float  p1[3],
const float  d[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda,
float *  uv,
const float  threshold 
)

Definition at line 718 of file math_geom.c.

References cross_v3_v3v3(), dot_v3v3(), mul_v3_fl(), p, and sub_v3_v3v3().

int isect_ray_tri_v3 ( const float  p1[3],
const float  d[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda,
float  uv[2] 
)

Definition at line 618 of file math_geom.c.

References cross_v3_v3v3(), dot_v3v3(), p, and sub_v3_v3v3().

Referenced by bvh_callback(), ray_hit_boundbox(), and ray_tri_intersection().

int isect_seg_seg_v2_point ( const float  v1[2],
const float  v2[2],
const float  v3[2],
const float  v4[2],
float  vi[2] 
)
int isect_sweeping_sphere_tri_v3 ( const float  p1[3],
const float  p2[3],
const float  radius,
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  lambda,
float  ipoint[3] 
)
static short IsectLLPt2Df ( const float  x0,
const float  y0,
const float  x1,
const float  y1,
const float  x2,
const float  y2,
const float  x3,
const float  y3,
float *  xi,
float *  yi 
) [static]

Definition at line 482 of file math_geom.c.

References fabs().

Referenced by isect_point_quad_uv_v2().

float line_point_factor_v2 ( const float  p[2],
const float  l1[2],
const float  l2[2] 
)

Definition at line 1254 of file math_geom.c.

References dot_v2v2(), and sub_v2_v2v2().

Referenced by M_Geometry_intersect_line_sphere_2d(), and project_paint_face_init().

float line_point_factor_v3 ( const float  p[3],
const float  l1[3],
const float  l2[3] 
)

Definition at line 1246 of file math_geom.c.

References dot_v3v3(), and sub_v3_v3v3().

Referenced by isect_line_plane_v3(), and M_Geometry_intersect_line_sphere().

void lookat_m4 ( float  mat[][4],
float  vx,
float  vy,
float  vz,
float  px,
float  py,
float  pz,
float  twist 
)

Definition at line 2119 of file math_geom.c.

References i_multmatrix(), MAT4_UNITY, rotate_m4(), sqrt(), translate_m4(), and unit_m4().

void map_to_sphere ( float *  u,
float *  v,
const float  x,
const float  y,
const float  z 
)
void map_to_tube ( float *  u,
float *  v,
const float  x,
const float  y,
const float  z 
)

Definition at line 2229 of file math_geom.c.

References KDL::atan2(), M_PI, and sqrt().

Referenced by do_2d_mapping(), do_sky_tex(), and uv_cylinder_project().

static float mean_value_half_tan ( const float  v1[3],
const float  v2[3],
const float  v3[3] 
) [static]

Definition at line 1877 of file math_geom.c.

References cross(), cross_v3_v3v3(), dot(), dot_v3v3(), len_v3(), and sub_v3_v3v3().

Referenced by interp_weights_poly_v3().

float normal_quad_v3 ( float  n[3],
const float  v1[3],
const float  v2[3],
const float  v3[3],
const float  v4[3] 
)
float normal_tri_v3 ( float  n[3],
const float  v1[3],
const float  v2[3],
const float  v3[3] 
)
void orthographic_m4 ( float  matrix[][4],
const float  left,
const float  right,
const float  bottom,
const float  top,
const float  nearClip,
const float  farClip 
)

Definition at line 2021 of file math_geom.c.

References left, and unit_m4().

void perspective_m4 ( float  mat[4][4],
const float  left,
const float  right,
const float  bottom,
const float  top,
const float  nearClip,
const float  farClip 
)
void plot_line_v2v2i ( const int  p1[2],
const int  p2[2],
int(*)(int, int, void *)  callback,
void *  userData 
)

Definition at line 1568 of file math_geom.c.

References error().

Referenced by ED_view3d_autodist_depth_seg().

static int point_in_slice ( const float  p[3],
const float  v1[3],
const float  l1[3],
const float  l2[3] 
) [static]

Definition at line 1462 of file math_geom.c.

References closest_to_line_v3(), dot_v3v3(), and sub_v3_v3v3().

Referenced by isect_point_tri_prism_v3().

void polarview_m4 ( float  Vm[][4],
float  dist,
float  azimuth,
float  incidence,
float  twist 
)

Definition at line 2108 of file math_geom.c.

References rotate_m4(), translate_m4(), and unit_m4().

void resolve_quad_uv ( float  uv[2],
const float  st[2],
const float  st0[2],
const float  st1[2],
const float  st2[2],
const float  st3[2] 
)

Definition at line 1968 of file math_geom.c.

References fabs(), i, IS_ZERO, sqrt(), and zero_v2().

Referenced by apply_heights_callback(), and apply_tangmat_callback().

void resolve_tri_uv ( float  uv[2],
const float  st[2],
const float  st0[2],
const float  st1[2],
const float  st2[2] 
)

Definition at line 1950 of file math_geom.c.

References simple_enum_gen::d, IS_ZERO, and zero_v2().

Referenced by apply_heights_callback(), apply_tangmat_callback(), and flush_pixel().

void sum_or_add_vertex_tangent ( void *  arena,
VertexTangent **  vtang,
const float  tang[3],
const float  uv[2] 
)
void tangent_from_uv ( float  uv1[2],
float  uv2[2],
float  uv3[3],
float  co1[3],
float  co2[3],
float  co3[3],
float  n[3],
float  tang[3] 
)

Definition at line 2346 of file math_geom.c.

References cross_v3_v3v3(), negate_v3(), and sub_v3_v3v3().

static float tri_signed_area ( const float  v1[3],
const float  v2[3],
const float  v3[3],
const int  i,
const int  j 
) [static]

Definition at line 1634 of file math_geom.c.

References i.

Referenced by barycentric_weights().

void vcloud_estimate_transform ( int  list_size,
float(*)  pos[3],
float *  weight,
float(*)  rpos[3],
float *  rweight,
float  lloc[3],
float  rloc[3],
float  lrot[3][3],
float  lscale[3][3] 
)
static void vec_add_dir ( float  r[3],
const float  v1[3],
const float  v2[3],
const float  fac 
) [static]

Definition at line 2540 of file math_geom.c.

Referenced by ff_visible_quad().

void window_translate_m4 ( float  winmat[][4],
float  perspmat[][4],
const float  x,
const float  y 
)

Definition at line 2065 of file math_geom.c.

References len_v3().

Referenced by screen_opengl_render_apply().