Blender V2.61 - r43446
Classes | Defines | Typedefs | Functions

BLI_math_geom.h File Reference

#include "BLI_math_inline.h"
#include "intern/math_geom_inline.c"

Go to the source code of this file.

Classes

struct  VertexTangent

Defines

#define ISECT_LINE_LINE_COLINEAR   -1
#define ISECT_LINE_LINE_NONE   0
#define ISECT_LINE_LINE_EXACT   1
#define ISECT_LINE_LINE_CROSS   2

Typedefs

typedef struct VertexTangent VertexTangent

Functions

void cent_tri_v3 (float r[3], const float a[3], const float b[3], const float c[3])
void cent_quad_v3 (float r[3], const float a[3], const float b[3], const float c[3], const float d[3])
float normal_tri_v3 (float r[3], const float a[3], const float b[3], const float c[3])
float normal_quad_v3 (float r[3], const float a[3], const float b[3], const float c[3], const float d[3])
float area_tri_v2 (const float a[2], const float b[2], const float c[2])
float area_tri_signed_v2 (const float v1[2], const float v2[2], const float v3[2])
float area_tri_v3 (const float a[3], const float b[3], const float c[3])
float area_quad_v3 (const float a[3], const float b[3], const float c[3], const float d[3])
float area_poly_v3 (int nr, float verts[][3], const float normal[3])
float dist_to_line_v2 (const float p[2], const float l1[2], const float l2[2])
float dist_to_line_segment_v2 (const float p[2], const float l1[2], const float l2[2])
void closest_to_line_segment_v2 (float closest[2], const float p[2], const float l1[2], const float l2[2])
float dist_to_plane_normalized_v3 (const float p[3], const float plane_co[3], const float plane_no_unit[3])
float dist_to_plane_v3 (const float p[3], const float plane_co[3], const float plane_no[3])
float dist_to_line_segment_v3 (const float p[3], const float l1[3], const float l2[3])
float closest_to_line_v3 (float r[3], const float p[3], const float l1[3], const float l2[3])
float closest_to_line_v2 (float r[2], const float p[2], const float l1[2], const float l2[2])
void closest_to_line_segment_v3 (float r[3], const float p[3], const float l1[3], const float l2[3])
void closest_to_plane_v3 (float r[3], const float plane_co[3], const float plane_no_unit[3], const float pt[3])
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])
int isect_line_line_v2 (const float a1[2], const float a2[2], const float b1[2], const float b2[2])
int isect_line_line_v2_int (const int a1[2], const int a2[2], const int b1[2], const int b2[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])
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_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 *r_lambda)
int isect_ray_plane_v3 (const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, const int clip)
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)
void isect_plane_plane_v3 (float r_isect_co[3], float r_isect_no[3], const float plane_a_co[3], const float plane_a_no[3], const float plane_b_co[3], const float plane_b_no[3])
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 *r_lambda, float r_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 *r_lambda, float r_uv[2])
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 *r_lambda, float r_uv[2], const float threshold)
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 *r_lambda, float r_uv[2], const float epsilon)
int isect_point_quad_v2 (const float p[2], const float a[2], const float b[2], const float c[2], const float d[2])
int isect_point_tri_v2 (const float v1[2], const float v2[2], const float v3[2], const float pt[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)
int isect_point_tri_prism_v3 (const float p[3], const float v1[3], const float v2[3], const float v3[3])
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 r_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 r_uv[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 *r_lambda, float ipoint[3])
int isect_axial_line_tri_v3 (const int axis, const float co1[3], const float co2[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda)
int isect_aabb_aabb_v3 (const float min1[3], const float max1[3], const float min2[3], const float max2[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)
void interp_weights_face_v3 (float w[4], const float a[3], const float b[3], const float c[3], const float d[3], const float p[3])
void interp_weights_poly_v3 (float w[], float v[][3], const int n, const float p[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)
int interp_sparse_array (float *array, const int list_size, const float invalid)
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])
void barycentric_weights_v2 (const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
void resolve_tri_uv (float r_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 lookat_m4 (float mat[4][4], float vx, float vy, float vz, float px, float py, float pz, float twist)
void polarview_m4 (float mat[4][4], float dist, float azimuth, float incidence, float twist)
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 orthographic_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)
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])
float * find_vertex_tangent (VertexTangent *vtang, const float uv[2])
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[2], float co1[3], float co2[3], float co3[3], float n[3], float tang[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])
MINLINE void zero_sh (float r[9])
MINLINE void copy_sh_sh (float r[9], const float a[9])
MINLINE void mul_sh_fl (float r[9], const float f)
MINLINE void add_sh_shsh (float r[9], const float a[9], const float b[9])
MINLINE float eval_shv3 (float r[9], const float v[3])
MINLINE float diffuse_shv3 (float r[9], const float v[3])
MINLINE void vec_fac_to_sh (float r[9], const float v[3], const float f)
MINLINE void madd_sh_shfl (float r[9], const float sh[3], const float f)
float form_factor_hemi_poly (float p[3], float n[3], float v1[3], float v2[3], float v3[3], float v4[3])
void axis_dominant_v3 (int *axis_a, int *axis_b, const float axis[3])

Detailed Description

Definition in file BLI_math_geom.h.


Define Documentation

#define ISECT_LINE_LINE_COLINEAR   -1

Definition at line 80 of file BLI_math_geom.h.

Referenced by isect_line_line_v2(), and isect_line_line_v2_int().

#define ISECT_LINE_LINE_CROSS   2

Definition at line 83 of file BLI_math_geom.h.

Referenced by isect_line_line_v2(), and isect_line_line_v2_int().

#define ISECT_LINE_LINE_EXACT   1

Definition at line 82 of file BLI_math_geom.h.

Referenced by isect_line_line_v2(), and isect_line_line_v2_int().

#define ISECT_LINE_LINE_NONE   0

Definition at line 81 of file BLI_math_geom.h.

Referenced by isect_line_line_v2(), and isect_line_line_v2_int().


Typedef Documentation

typedef struct VertexTangent VertexTangent

Function Documentation

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] 
)
MINLINE void add_sh_shsh ( float  r[9],
const float  a[9],
const float  b[9] 
)

Definition at line 56 of file math_geom_inline.c.

References i.

Referenced by madd_sh_shfl().

float area_poly_v3 ( int  nr,
float  verts[][3],
const float  normal[3] 
)

Definition at line 130 of file math_geom.c.

References fabsf, max, and MAX3().

float area_quad_v3 ( const float  a[3],
const float  b[3],
const float  c[3],
const float  d[3] 
)
float area_tri_signed_v2 ( const float  v1[2],
const float  v2[2],
const float  v3[2] 
)

Definition at line 96 of file math_geom.c.

Referenced by barycentric_weights_v2(), and barycentric_weights_v2_persp().

float area_tri_v2 ( const float  a[2],
const float  b[2],
const float  c[2] 
)

Definition at line 91 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  a[3],
const float  b[3],
const float  c[3] 
)
void axis_dominant_v3 ( int *  axis_a,
int *  axis_b,
const float  axis[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] 
)
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 2254 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 2291 of file math_geom.c.

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

void cent_quad_v3 ( float  r[3],
const float  a[3],
const float  b[3],
const float  c[3],
const float  d[3] 
)

Definition at line 47 of file math_geom.c.

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

void cent_tri_v3 ( float  r[3],
const float  a[3],
const float  b[3],
const float  c[3] 
)
int clip_line_plane ( float  p1[3],
float  p2[3],
const float  plane[4] 
)

Definition at line 1598 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_v2 ( float  closest[2],
const float  p[2],
const float  l1[2],
const float  l2[2] 
)

Definition at line 212 of file math_geom.c.

References closest_to_line_v2(), and copy_v2_v2().

void closest_to_line_segment_v3 ( float  r[3],
const float  p[3],
const float  l1[3],
const float  l2[3] 
)
float closest_to_line_v2 ( float  r[2],
const float  p[2],
const float  l1[2],
const float  l2[2] 
)
float closest_to_line_v3 ( float  r[3],
const float  p[3],
const float  l1[3],
const float  l2[3] 
)
void closest_to_plane_v3 ( float  r[3],
const float  plane_co[3],
const float  plane_no_unit[3],
const float  pt[3] 
)

Definition at line 249 of file math_geom.c.

References dot_v3v3(), and sub_v3_v3v3().

Referenced by getVerticalAndHorizontalChange().

MINLINE void copy_sh_sh ( float  r[9],
const float  a[9] 
)

Definition at line 43 of file math_geom_inline.c.

Referenced by madd_sh_shfl(), and vec_fac_to_sh().

MINLINE float diffuse_shv3 ( float  r[9],
const float  v[3] 
)

Definition at line 75 of file math_geom_inline.c.

References sum().

float dist_to_line_segment_v2 ( const float  p[2],
const float  l1[2],
const float  l2[2] 
)
float dist_to_line_segment_v3 ( const float  p[3],
const float  l1[3],
const float  l2[3] 
)

Definition at line 284 of file math_geom.c.

References closest_to_line_segment_v3(), and len_v3v3().

float dist_to_line_v2 ( const float  p[2],
const float  l1[2],
const float  l2[2] 
)
float dist_to_plane_normalized_v3 ( const float  p[3],
const float  plane_co[3],
const float  plane_no_unit[3] 
)

Definition at line 263 of file math_geom.c.

References add_v3_v3v3(), and line_point_factor_v3().

float dist_to_plane_v3 ( const float  p[3],
const float  plane_co[3],
const float  plane_no[3] 
)
MINLINE float eval_shv3 ( float  r[9],
const float  v[3] 
)

Definition at line 123 of file math_geom_inline.c.

References dot_shsh(), and vec_fac_to_sh().

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 3027 of file math_geom.c.

References ff_quad_form_factor(), and ff_visible_quad().

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 2006 of file math_geom.c.

Referenced by psys_interpolate_particle().

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

Definition at line 1882 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  a[3],
const float  b[3],
const float  c[3],
const float  d[3],
const float  p[3] 
)
void interp_weights_poly_v3 ( float  w[],
float  v[][3],
const int  n,
const float  p[3] 
)
int isect_aabb_aabb_v3 ( const float  min1[3],
const float  max1[3],
const float  min2[3],
const float  max2[3] 
)

Definition at line 1293 of file math_geom.c.

Referenced by particle_intersect_dm().

int isect_axial_line_tri_v3 ( const int  axis,
const float  co1[3],
const float  co2[3],
const float  v0[3],
const float  v1[3],
const float  v2[3],
float *  r_lambda 
)

* first a simple bounding box test */

* then a full intersection test */

Definition at line 1129 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 *  r_lambda 
)
int isect_line_line_v2 ( const float  a1[2],
const float  a2[2],
const float  b1[2],
const float  b2[2] 
)
int isect_line_line_v2_int ( const int  a1[2],
const int  a2[2],
const int  b1[2],
const int  b2[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 834 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(), isect_plane_plane_v3(), 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 480 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 406 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 *  r_lambda,
float  r_uv[2] 
)
void isect_plane_plane_v3 ( float  r_isect_co[3],
float  r_isect_no[3],
const float  plane_a_co[3],
const float  plane_a_no[3],
const float  plane_b_co[3],
const float  plane_b_no[3] 
)

Intersect two planes, return a point on the intersection and a vector that runs on the direction of the intersection. Return error code is the same as 'isect_line_line_v3'.

Parameters:
r_isect_coThe resulting intersection point.
r_isect_noThe resulting vector of the intersection.
plane_a_coThe point on the first plane.
plane_a_noThe normal of the first plane.
plane_b_coThe point on the second plane.
plane_b_noThe normal of the second plane.

Definition at line 878 of file math_geom.c.

References add_v3_v3(), cross_v3_v3v3(), FALSE, and isect_line_plane_v3().

Referenced by camera_view_frame_fit_to_scene(), and M_Geometry_intersect_plane_plane().

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  r_uv[2] 
)

Definition at line 1437 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  r_uv[2] 
)

Definition at line 1343 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  p[2],
const float  a[2],
const float  b[2],
const float  c[2],
const float  d[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 1590 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  v1[2],
const float  v2[2],
const float  v3[2],
const float  pt[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 1523 of file math_geom.c.

References isect_point_tri_v2(), and p.

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

Definition at line 714 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 *  r_lambda,
float  r_uv[2],
const float  epsilon 
)

Definition at line 746 of file math_geom.c.

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

Referenced by bvhtree_ray_tri_intersection(), and 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 *  r_lambda,
float  r_uv[2],
const float  threshold 
)

Definition at line 782 of file math_geom.c.

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

Referenced by peelDerivedMesh().

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 *  r_lambda,
float  r_uv[2] 
)

Definition at line 676 of file math_geom.c.

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

Referenced by bvh_callback(), and ray_hit_boundbox().

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 *  r_lambda,
float  ipoint[3] 
)
float line_point_factor_v2 ( const float  p[2],
const float  l1[2],
const float  l2[2] 
)

Definition at line 1334 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] 
)
void lookat_m4 ( float  mat[4][4],
float  vx,
float  vy,
float  vz,
float  px,
float  py,
float  pz,
float  twist 
)
MINLINE void madd_sh_shfl ( float  r[9],
const float  sh[3],
const float  f 
)

Definition at line 131 of file math_geom_inline.c.

References add_sh_shsh(), copy_sh_sh(), and mul_sh_fl().

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 2314 of file math_geom.c.

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

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

MINLINE void mul_sh_fl ( float  r[9],
const float  f 
)

Definition at line 48 of file math_geom_inline.c.

References i.

Referenced by madd_sh_shfl(), and vec_fac_to_sh().

float normal_quad_v3 ( float  r[3],
const float  a[3],
const float  b[3],
const float  c[3],
const float  d[3] 
)
float normal_tri_v3 ( float  r[3],
const float  a[3],
const float  b[3],
const float  c[3] 
)
void orthographic_m4 ( float  mat[4][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 plot_line_v2v2i ( const int  p1[2],
const int  p2[2],
int(*)(int, int, void *)  callback,
void *  userData 
)

Definition at line 1648 of file math_geom.c.

References error().

Referenced by ED_view3d_autodist_depth_seg().

void polarview_m4 ( float  mat[4][4],
float  dist,
float  azimuth,
float  incidence,
float  twist 
)
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 2053 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  r_uv[2],
const float  st[2],
const float  st0[2],
const float  st1[2],
const float  st2[2] 
)

Definition at line 2035 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[2],
float  co1[3],
float  co2[3],
float  co3[3],
float  n[3],
float  tang[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] 
)
MINLINE void vec_fac_to_sh ( float  r[9],
const float  v[3],
const float  f 
)

Definition at line 97 of file math_geom_inline.c.

References copy_sh_sh(), and mul_sh_fl().

Referenced by eval_shv3().

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

Definition at line 2150 of file math_geom.c.

References len_v3().

Referenced by screen_opengl_render_apply().

MINLINE void zero_sh ( float  r[9])

Definition at line 38 of file math_geom_inline.c.