Blender  V3.3
Classes | Typedefs | Functions | Variables
implicit_blender.c File Reference
#include "implicit.h"
#include "MEM_guardedalloc.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_force_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "BKE_cloth.h"
#include "BKE_collision.h"
#include "BKE_effect.h"
#include "SIM_mass_spring.h"

Go to the source code of this file.

Classes

struct  fmatrix3x3
 
struct  Implicit_Data
 

Typedefs

typedef float lfVector[3]
 
typedef struct fmatrix3x3 fmatrix3x3
 
typedef struct Implicit_Data Implicit_Data
 

Functions

DO_INLINE void mul_fvector_S (float to[3], const float from[3], float scalar)
 
DO_INLINE void mul_fvectorT_fvector (float to[3][3], const float vectorA[3], const float vectorB[3])
 
DO_INLINE void mul_fvectorT_fvectorS (float to[3][3], float vectorA[3], float vectorB[3], float aS)
 
DO_INLINE lfVectorcreate_lfvector (unsigned int verts)
 
DO_INLINE void del_lfvector (float(*fLongVector)[3])
 
DO_INLINE void cp_lfvector (float(*to)[3], float(*from)[3], unsigned int verts)
 
DO_INLINE void init_lfvector (float(*fLongVector)[3], const float vector[3], unsigned int verts)
 
DO_INLINE void zero_lfvector (float(*to)[3], unsigned int verts)
 
DO_INLINE void mul_lfvectorS (float(*to)[3], float(*fLongVector)[3], float scalar, unsigned int verts)
 
DO_INLINE void submul_lfvectorS (float(*to)[3], float(*fLongVector)[3], float scalar, unsigned int verts)
 
DO_INLINE float dot_lfvector (float(*fLongVectorA)[3], float(*fLongVectorB)[3], unsigned int verts)
 
DO_INLINE void add_lfvector_lfvector (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], unsigned int verts)
 
DO_INLINE void add_lfvector_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], float bS, unsigned int verts)
 
DO_INLINE void add_lfvectorS_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float aS, float(*fLongVectorB)[3], float bS, unsigned int verts)
 
DO_INLINE void sub_lfvector_lfvectorS (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], float bS, unsigned int verts)
 
DO_INLINE void sub_lfvector_lfvector (float(*to)[3], float(*fLongVectorA)[3], float(*fLongVectorB)[3], unsigned int verts)
 
DO_INLINE void cp_fmatrix (float to[3][3], const float from[3][3])
 
DO_INLINE void initdiag_fmatrixS (float to[3][3], float aS)
 
DO_INLINE void mul_fmatrix_S (float matrix[3][3], float scalar)
 
DO_INLINE void mul_fvector_fmatrix (float *to, const float *from, const float matrix[3][3])
 
DO_INLINE void mul_fmatrix_fvector (float *to, const float matrix[3][3], const float from[3])
 
DO_INLINE void add_fmatrix_fmatrix (float to[3][3], const float matrixA[3][3], const float matrixB[3][3])
 
DO_INLINE void subadd_fmatrixS_fmatrixS (float to[3][3], const float matrixA[3][3], float aS, const float matrixB[3][3], float bS)
 
DO_INLINE void sub_fmatrix_fmatrix (float to[3][3], const float matrixA[3][3], const float matrixB[3][3])
 
DO_INLINE void muladd_fmatrix_fvector (float to[3], const float matrix[3][3], const float from[3])
 
DO_INLINE void muladd_fmatrixT_fvector (float to[3], const float matrix[3][3], const float from[3])
 
BLI_INLINE void outerproduct (float r[3][3], const float a[3], const float b[3])
 
BLI_INLINE void cross_m3_v3m3 (float r[3][3], const float v[3], const float m[3][3])
 
BLI_INLINE void cross_v3_identity (float r[3][3], const float v[3])
 
BLI_INLINE void madd_m3_m3fl (float r[3][3], const float m[3][3], float f)
 
BLI_INLINE void init_fmatrix (fmatrix3x3 *matrix, int r, int c)
 
DO_INLINE fmatrix3x3create_bfmatrix (unsigned int verts, unsigned int springs)
 
DO_INLINE void del_bfmatrix (fmatrix3x3 *matrix)
 
DO_INLINE void cp_bfmatrix (fmatrix3x3 *to, fmatrix3x3 *from)
 
DO_INLINE void init_bfmatrix (fmatrix3x3 *matrix, float m3[3][3])
 
DO_INLINE void initdiag_bfmatrix (fmatrix3x3 *matrix, float m3[3][3])
 
DO_INLINE void mul_bfmatrix_lfvector (float(*to)[3], fmatrix3x3 *from, lfVector *fLongVector)
 
DO_INLINE void subadd_bfmatrixS_bfmatrixS (fmatrix3x3 *to, fmatrix3x3 *from, float aS, fmatrix3x3 *matrix, float bS)
 
Implicit_DataSIM_mass_spring_solver_create (int numverts, int numsprings)
 
void SIM_mass_spring_solver_free (Implicit_Data *id)
 
BLI_INLINE void world_to_root_v3 (Implicit_Data *data, int index, float r[3], const float v[3])
 
BLI_INLINE void root_to_world_v3 (Implicit_Data *data, int index, float r[3], const float v[3])
 
BLI_INLINE void world_to_root_m3 (Implicit_Data *data, int index, float r[3][3], const float m[3][3])
 
BLI_INLINE void root_to_world_m3 (Implicit_Data *data, int index, float r[3][3], const float m[3][3])
 
DO_INLINE void filter (lfVector *V, fmatrix3x3 *S)
 
static int cg_filtered (lfVector *ldV, fmatrix3x3 *lA, lfVector *lB, lfVector *z, fmatrix3x3 *S, ImplicitSolverResult *result)
 
bool SIM_mass_spring_solve_velocities (Implicit_Data *data, float dt, ImplicitSolverResult *result)
 
bool SIM_mass_spring_solve_positions (Implicit_Data *data, float dt)
 
void SIM_mass_spring_apply_result (Implicit_Data *data)
 
void SIM_mass_spring_set_vertex_mass (Implicit_Data *data, int index, float mass)
 
void SIM_mass_spring_set_rest_transform (Implicit_Data *data, int index, float tfm[3][3])
 
void SIM_mass_spring_set_motion_state (Implicit_Data *data, int index, const float x[3], const float v[3])
 
void SIM_mass_spring_set_position (Implicit_Data *data, int index, const float x[3])
 
void SIM_mass_spring_set_velocity (Implicit_Data *data, int index, const float v[3])
 
void SIM_mass_spring_get_motion_state (struct Implicit_Data *data, int index, float x[3], float v[3])
 
void SIM_mass_spring_get_position (struct Implicit_Data *data, int index, float x[3])
 
void SIM_mass_spring_get_velocity (struct Implicit_Data *data, int index, float v[3])
 
void SIM_mass_spring_get_new_position (struct Implicit_Data *data, int index, float x[3])
 
void SIM_mass_spring_set_new_position (struct Implicit_Data *data, int index, const float x[3])
 
void SIM_mass_spring_get_new_velocity (struct Implicit_Data *data, int index, float v[3])
 
void SIM_mass_spring_set_new_velocity (struct Implicit_Data *data, int index, const float v[3])
 
static int SIM_mass_spring_add_block (Implicit_Data *data, int v1, int v2)
 
void SIM_mass_spring_clear_constraints (Implicit_Data *data)
 
void SIM_mass_spring_add_constraint_ndof0 (Implicit_Data *data, int index, const float dV[3])
 
void SIM_mass_spring_add_constraint_ndof1 (Implicit_Data *data, int index, const float c1[3], const float c2[3], const float dV[3])
 
void SIM_mass_spring_add_constraint_ndof2 (Implicit_Data *data, int index, const float c1[3], const float dV[3])
 
void SIM_mass_spring_clear_forces (Implicit_Data *data)
 
void SIM_mass_spring_force_reference_frame (Implicit_Data *data, int index, const float acceleration[3], const float omega[3], const float domega_dt[3], float mass)
 
void SIM_mass_spring_force_gravity (Implicit_Data *data, int index, float mass, const float g[3])
 
void SIM_mass_spring_force_drag (Implicit_Data *data, float drag)
 
void SIM_mass_spring_force_extern (struct Implicit_Data *data, int i, const float f[3], float dfdx[3][3], float dfdv[3][3])
 
static float calc_nor_area_tri (float nor[3], const float v1[3], const float v2[3], const float v3[3])
 
void SIM_mass_spring_force_face_wind (Implicit_Data *data, int v1, int v2, int v3, const float(*winvec)[3])
 
void SIM_mass_spring_force_face_extern (Implicit_Data *data, int v1, int v2, int v3, const float(*forcevec)[3])
 
float SIM_tri_tetra_volume_signed_6x (Implicit_Data *data, int v1, int v2, int v3)
 
float SIM_tri_area (struct Implicit_Data *data, int v1, int v2, int v3)
 
void SIM_mass_spring_force_pressure (Implicit_Data *data, int v1, int v2, int v3, float common_pressure, const float *vertex_pressure, const float weights[3])
 
static void edge_wind_vertex (const float dir[3], float length, float radius, const float wind[3], float f[3], float UNUSED(dfdx[3][3]), float UNUSED(dfdv[3][3]))
 
void SIM_mass_spring_force_edge_wind (Implicit_Data *data, int v1, int v2, float radius1, float radius2, const float(*winvec)[3])
 
void SIM_mass_spring_force_vertex_wind (Implicit_Data *data, int v, float UNUSED(radius), const float(*winvec)[3])
 
BLI_INLINE void dfdx_spring (float to[3][3], const float dir[3], float length, float L, float k)
 
BLI_INLINE void dfdv_damp (float to[3][3], const float dir[3], float damping)
 
BLI_INLINE float fb (float length, float L)
 
BLI_INLINE float fbderiv (float length, float L)
 
BLI_INLINE float fbstar (float length, float L, float kb, float cb)
 
BLI_INLINE float fbstar_jacobi (float length, float L, float kb, float cb)
 
BLI_INLINE bool spring_length (Implicit_Data *data, int i, int j, float r_extent[3], float r_dir[3], float *r_length, float r_vel[3])
 
BLI_INLINE void apply_spring (Implicit_Data *data, int i, int j, const float f[3], const float dfdx[3][3], const float dfdv[3][3])
 
bool SIM_mass_spring_force_spring_linear (Implicit_Data *data, int i, int j, float restlen, float stiffness_tension, float damping_tension, float stiffness_compression, float damping_compression, bool resist_compress, bool new_compress, float clamp_force)
 
bool SIM_mass_spring_force_spring_bending (Implicit_Data *data, int i, int j, float restlen, float kb, float cb)
 
BLI_INLINE void poly_avg (lfVector *data, const int *inds, int len, float r_avg[3])
 
BLI_INLINE void poly_norm (lfVector *data, int i, int j, int *inds, int len, float r_dir[3])
 
BLI_INLINE void edge_avg (lfVector *data, int i, int j, float r_avg[3])
 
BLI_INLINE void edge_norm (lfVector *data, int i, int j, float r_dir[3])
 
BLI_INLINE float bend_angle (const float dir_a[3], const float dir_b[3], const float dir_e[3])
 
BLI_INLINE void spring_angle (Implicit_Data *data, int i, int j, int *i_a, int *i_b, int len_a, int len_b, float r_dir_a[3], float r_dir_b[3], float *r_angle, float r_vel_a[3], float r_vel_b[3])
 
bool SIM_mass_spring_force_spring_angular (Implicit_Data *data, int i, int j, int *i_a, int *i_b, int len_a, int len_b, float restang, float stiffness, float damping)
 
BLI_INLINE void spring_grad_dir (Implicit_Data *data, int i, int j, float edge[3], float dir[3], float grad_dir[3][3])
 
BLI_INLINE void spring_hairbend_forces (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, const float dx[3], const float dv[3], float r_f[3])
 
BLI_INLINE void spring_hairbend_estimate_dfdx (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, float dfdx[3][3])
 
BLI_INLINE void spring_hairbend_estimate_dfdv (Implicit_Data *data, int i, int j, int k, const float goal[3], float stiffness, float damping, int q, float dfdv[3][3])
 
bool SIM_mass_spring_force_spring_bending_hair (Implicit_Data *data, int i, int j, int k, const float target[3], float stiffness, float damping)
 
bool SIM_mass_spring_force_spring_goal (Implicit_Data *data, int i, const float goal_x[3], const float goal_v[3], float stiffness, float damping)
 

Variables

static float I [3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
 
static float ZERO [3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
 

Typedef Documentation

◆ fmatrix3x3

typedef struct fmatrix3x3 fmatrix3x3

◆ Implicit_Data

typedef struct Implicit_Data Implicit_Data

◆ lfVector

typedef float lfVector[3]

Definition at line 62 of file implicit_blender.c.

Function Documentation

◆ add_fmatrix_fmatrix()

DO_INLINE void add_fmatrix_fmatrix ( float  to[3][3],
const float  matrixA[3][3],
const float  matrixB[3][3] 
)

Definition at line 434 of file implicit_blender.c.

References add_v3_v3v3().

◆ add_lfvector_lfvector()

DO_INLINE void add_lfvector_lfvector ( float(*)  to[3],
float(*)  fLongVectorA[3],
float(*)  fLongVectorB[3],
unsigned int  verts 
)

Definition at line 197 of file implicit_blender.c.

References add_v3_v3v3(), and verts.

Referenced by mul_bfmatrix_lfvector(), and SIM_mass_spring_solve_velocities().

◆ add_lfvector_lfvectorS()

DO_INLINE void add_lfvector_lfvectorS ( float(*)  to[3],
float(*)  fLongVectorA[3],
float(*)  fLongVectorB[3],
float  bS,
unsigned int  verts 
)

Definition at line 209 of file implicit_blender.c.

References VECADDS, and verts.

Referenced by cg_filtered(), and SIM_mass_spring_solve_positions().

◆ add_lfvectorS_lfvectorS()

DO_INLINE void add_lfvectorS_lfvectorS ( float(*)  to[3],
float(*)  fLongVectorA[3],
float  aS,
float(*)  fLongVectorB[3],
float  bS,
unsigned int  verts 
)

Definition at line 222 of file implicit_blender.c.

References VECADDSS, and verts.

Referenced by SIM_mass_spring_solve_velocities().

◆ apply_spring()

BLI_INLINE void apply_spring ( Implicit_Data data,
int  i,
int  j,
const float  f[3],
const float  dfdx[3][3],
const float  dfdv[3][3] 
)

◆ bend_angle()

BLI_INLINE float bend_angle ( const float  dir_a[3],
const float  dir_b[3],
const float  dir_e[3] 
)

Definition at line 1904 of file implicit_blender.c.

References atan2f, KDL::cos(), cross_v3_v3v3(), dot_v3v3(), and KDL::sin().

Referenced by spring_angle().

◆ calc_nor_area_tri()

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

◆ cg_filtered()

static int cg_filtered ( lfVector ldV,
fmatrix3x3 lA,
lfVector lB,
lfVector z,
fmatrix3x3 S,
ImplicitSolverResult result 
)
static

◆ cp_bfmatrix()

DO_INLINE void cp_bfmatrix ( fmatrix3x3 to,
fmatrix3x3 from 
)

Definition at line 568 of file implicit_blender.c.

References from.

Referenced by SIM_mass_spring_solve_velocities().

◆ cp_fmatrix()

DO_INLINE void cp_fmatrix ( float  to[3][3],
const float  from[3][3] 
)

Definition at line 349 of file implicit_blender.c.

References copy_v3_v3(), and from.

Referenced by init_bfmatrix(), initdiag_bfmatrix(), and initdiag_fmatrixS().

◆ cp_lfvector()

DO_INLINE void cp_lfvector ( float(*)  to[3],
float(*)  from[3],
unsigned int  verts 
)

Definition at line 138 of file implicit_blender.c.

References from, and verts.

Referenced by cg_filtered(), and SIM_mass_spring_apply_result().

◆ create_bfmatrix()

DO_INLINE fmatrix3x3* create_bfmatrix ( unsigned int  verts,
unsigned int  springs 
)

◆ create_lfvector()

DO_INLINE lfVector* create_lfvector ( unsigned int  verts)

◆ cross_m3_v3m3()

BLI_INLINE void cross_m3_v3m3 ( float  r[3][3],
const float  v[3],
const float  m[3][3] 
)

Definition at line 485 of file implicit_blender.c.

References cross_v3_v3v3(), r, and v.

Referenced by SIM_mass_spring_force_reference_frame().

◆ cross_v3_identity()

BLI_INLINE void cross_v3_identity ( float  r[3][3],
const float  v[3] 
)

Definition at line 492 of file implicit_blender.c.

References r, and v.

Referenced by SIM_mass_spring_force_reference_frame().

◆ del_bfmatrix()

DO_INLINE void del_bfmatrix ( fmatrix3x3 matrix)

Definition at line 560 of file implicit_blender.c.

References MEM_freeN, and NULL.

Referenced by SIM_mass_spring_solver_free().

◆ del_lfvector()

DO_INLINE void del_lfvector ( float(*)  fLongVector[3])

◆ dfdv_damp()

BLI_INLINE void dfdv_damp ( float  to[3][3],
const float  dir[3],
float  damping 
)

◆ dfdx_spring()

BLI_INLINE void dfdx_spring ( float  to[3][3],
const float  dir[3],
float  length,
float  L,
float  k 
)

◆ dot_lfvector()

DO_INLINE float dot_lfvector ( float(*)  fLongVectorA[3],
float(*)  fLongVectorB[3],
unsigned int  verts 
)

Definition at line 180 of file implicit_blender.c.

References dot_v3v3(), and verts.

Referenced by cg_filtered().

◆ edge_avg()

BLI_INLINE void edge_avg ( lfVector data,
int  i,
int  j,
float  r_avg[3] 
)

Definition at line 1891 of file implicit_blender.c.

References data.

Referenced by spring_angle().

◆ edge_norm()

BLI_INLINE void edge_norm ( lfVector data,
int  i,
int  j,
float  r_dir[3] 
)

Definition at line 1898 of file implicit_blender.c.

References data, normalize_v3(), and sub_v3_v3v3().

Referenced by spring_angle().

◆ edge_wind_vertex()

static void edge_wind_vertex ( const float  dir[3],
float  length,
float  radius,
const float  wind[3],
float  f[3],
float   UNUSEDdfdx[3][3],
float   UNUSEDdfdv[3][3] 
)
static

◆ fb()

BLI_INLINE float fb ( float  length,
float  L 
)

Definition at line 1686 of file implicit_blender.c.

References L, blender::math::length(), and x.

Referenced by blender::gpu::Texture::attach_to(), gjkepa2_impl::EPA::bind(), EPA< btConvexTemplate >::bind(), BM_edge_calc_rotate(), BM_edge_rotate(), BM_edge_rotate_check(), BPyGPUFrameBuffer_CreatePyObject(), buf_rectfill_area(), blender::gpu::GLTexture::check_feedback_loop(), blender::gpu::MTLTexture::clear(), blender::gpu::GLTexture::clear(), convertJoints(), blender::gpu::Texture::detach_from(), blender::gpu::detect_mip_render_workaround(), DRW_curves_update(), DRW_hair_update(), ED_region_do_draw(), edbm_edge_rotate_selected_exec(), EEVEE_lightbake_filter_diffuse(), EEVEE_lightbake_filter_glossy(), EEVEE_lightbake_filter_visibility(), EEVEE_lookdev_draw(), EEVEE_lut_update_ggx_brdf(), EEVEE_lut_update_ggx_btdf(), fbstar(), fbstar_jacobi(), GPU_framebuffer_bind_loadstore(), GPU_framebuffer_config_array(), GPU_framebuffer_push(), GPU_framebuffer_texture_attach(), GPU_framebuffer_texture_cubeface_attach(), GPU_framebuffer_texture_detach(), GPU_framebuffer_texture_layer_attach(), GPU_offscreen_bind(), GPU_offscreen_create(), GPU_offscreen_unbind(), gpu_select_pick_load_id(), GPU_viewport_bind_from_offscreen(), internalInitMultipleJoints(), lineart_bounding_area_triangle_intersect(), pygpu_framebuffer_free_if_possible(), pygpu_framebuffer_stack_pop_and_restore_or_error(), pygpu_framebuffer_stack_push_and_bind_or_error(), blender::gpu::MTLRenderPassState::reset_state(), sequencer_ibuf_get(), and writeBackJoints().

◆ fbderiv()

BLI_INLINE float fbderiv ( float  length,
float  L 
)

Definition at line 1695 of file implicit_blender.c.

References L, blender::math::length(), and x.

Referenced by fbstar_jacobi().

◆ fbstar()

BLI_INLINE float fbstar ( float  length,
float  L,
float  kb,
float  cb 
)

◆ fbstar_jacobi()

BLI_INLINE float fbstar_jacobi ( float  length,
float  L,
float  kb,
float  cb 
)

◆ filter()

DO_INLINE void filter ( lfVector V,
fmatrix3x3 S 
)

Definition at line 758 of file implicit_blender.c.

References mul_m3_v3(), r, V, and fmatrix3x3::vcount.

Referenced by achannel_setting_flush_widget_cb(), action_frame_has_keyframe(), actkeys_channels_get_selected_extents(), actkeys_find_key_at_position(), actkeys_find_list_element_at_position(), actkeys_framejump_exec(), actkeys_is_key_at_position(), actkeys_mselect_channel_only(), actkeys_mselect_column(), actkeys_mselect_single(), actkeys_select_leftright(), actkeys_select_linked_exec(), ANIM_animdata_keyframe_callback(), anim_channels_for_selection(), ANIM_editkeyframes_refresh(), ANIM_set_active_channel(), ANIM_sync_animchannels_to_data(), animchannels_clean_empty_exec(), animchannels_delete_exec(), animchannels_enable_exec(), animchannels_group_channels(), animchannels_group_exec(), animchannels_rearrange_exec(), animchannels_ungroup_exec(), bake_graph_curves(), BKE_tracking_stabilize_frame(), box_select_action(), box_select_anim_channels(), box_select_graphcurves(), box_select_graphkeys(), box_select_nla_strips(), bpy_bmesh_transform(), cachefile_to_keylist(), cg_filtered(), clean_action_keys(), clean_graph_keys(), blender::deg::clear_id_nodes_conditional(), click_select_channel_fcurve(), click_select_channel_gplayer(), click_select_channel_group(), columnselect_action_keys(), columnselect_graph_keys(), Eigen::internal::constrained_conjugate_gradient(), blender::bke::id::remapper::IDRemapper::contains_mappings_for_any(), copy_action_keys(), copy_graph_keys(), createTransActionData(), createTransNlaData(), delete_action_keys(), delete_graph_keys(), deselect_action_keys(), deselect_graph_keys(), deselect_nla_strips(), draw_channel_names(), draw_channel_strips(), draw_nla_channel_list(), draw_nla_main_data(), drivers_editor_show_exec(), duplicate_action_keys(), duplicate_graph_keys(), ED_asset_filter_matches_asset(), ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_paste(), ED_nla_postop_refresh(), equalize_graph_keys(), fcurve_frame_has_keyframe(), filelist_setfilter_options(), filter_reorder(), blender::compositor::DenoiseOperation::generate_denoise(), get_active_fcurve_channel(), get_filter_expand_flag(), get_keyframe_extents(), get_nearest_fcurve_verts_list(), get_nlastrip_extents(), graph_draw_channel_names(), graph_draw_curves(), graph_driver_delete_invalid_exec(), graph_fmodifier_add_exec(), graph_fmodifier_paste_exec(), graph_refresh_fcurve_colors(), graphkeys_euler_filter_exec(), graphkeys_mselect_column(), graphkeys_select_leftright(), graphkeys_select_linked_exec(), graphkeys_smooth_exec(), graphop_editable_keyframes_poll(), graphop_selected_fcurve_poll(), graphop_visible_keyframes_poll(), graphview_curves_hide_exec(), graphview_curves_reveal_exec(), id_frame_has_keyframe(), IMB_filter_extend(), IMB_transform(), initialize_animdata_selection_filter(), initialize_box_select_anim_data(), insert_action_keys(), insert_graph_keys(), is_filtered_asset(), is_filtered_asset_library(), is_filtered_file(), is_filtered_file_name(), is_filtered_file_relpath(), is_filtered_file_type(), is_filtered_hidden(), is_filtered_id_file_type(), is_filtered_lib(), is_filtered_lib_type(), is_filtered_main(), is_filtered_main_assets(), markers_selectkeys_between(), mirror_action_keys(), mirror_graph_keys(), mouse_action_keys(), mouse_anim_channels(), mouse_graph_keys(), mouse_nla_channels(), mouse_nla_strips(), nla_channels_get_selected_extents(), nla_fmodifier_add_exec(), nla_fmodifier_copy_exec(), nla_fmodifier_paste_exec(), nla_panel_context(), nlachannels_pushdown_exec(), nlaedit_add_actionclip_exec(), nlaedit_add_meta_exec(), nlaedit_add_sound_exec(), nlaedit_add_tracks_empty(), nlaedit_add_tracks_existing(), nlaedit_add_transition_exec(), nlaedit_apply_scale_exec(), nlaedit_clear_scale_exec(), nlaedit_delete_exec(), nlaedit_delete_tracks_exec(), nlaedit_disable_tweakmode(), nlaedit_duplicate_exec(), nlaedit_enable_tweakmode_exec(), nlaedit_make_single_user_exec(), nlaedit_move_down_exec(), nlaedit_move_up_exec(), nlaedit_remove_meta_exec(), nlaedit_select_leftright(), nlaedit_snap_exec(), nlaedit_split_exec(), nlaedit_strip_at_region_position(), nlaedit_swap_exec(), nlaedit_sync_actlen_exec(), nlaedit_toggle_mute_exec(), blender::nodes::node_composite_blur_cc::node_composit_buts_blur(), ob_keyframes_loop(), ob_to_keylist(), object_frame_has_keyframe(), paste_action_keys(), paste_graph_keys(), posttrans_action_clean(), prepare_filter_asset_library(), preview_filter_to_idfilter(), rearrange_animchannels_filter_visible(), rearrange_gpencil_channels(), region_select_action_keys(), rename_anim_channels(), RVBlurBitmap2_float(), sample_action_keys(), sample_graph_keys(), scene_keyframes_loop(), scene_to_keylist(), screen_ctx_active_editable_fcurve(), screen_ctx_sel_actions_impl(), screen_ctx_sel_edit_fcurves_(), screen_ctx_selected_editable_keyframes(), select_anim_channel_keys(), select_moreless_action_keys(), select_moreless_graph_keys(), sequencer_preprocess_transform_crop(), set_filter_expand_flag(), seteasing_graph_keys(), setexpo_action_keys(), setexpo_graph_keys(), setflag_anim_channels(), sethandles_action_keys(), sethandles_graph_keys(), setipo_graph_keys(), setkeytype_action_keys(), snap_action_keys(), snap_graph_keys(), special_aftertrans_update__actedit(), special_aftertrans_update__graph(), special_aftertrans_update__nla(), spreadsheet_filter_panel_draw(), spreadsheet_filter_panel_draw_header(), sum_selected_keyframes(), summary_keyframes_loop(), summary_to_keylist(), blender::eevee::Film::sync(), blender::bke::tests::TEST_F(), ui_template_id(), uilist_filter_items_default(), uiTemplateGpencilColorPreview(), uiTemplateID(), uiTemplateIDBrowse(), uiTemplateIDPreview(), uiTemplateIDTabs(), unbake_graph_curves(), and WM_operator_properties_filesel().

◆ init_bfmatrix()

DO_INLINE void init_bfmatrix ( fmatrix3x3 matrix,
float  m3[3][3] 
)

Definition at line 576 of file implicit_blender.c.

References cp_fmatrix(), fmatrix3x3::scount, and fmatrix3x3::vcount.

Referenced by SIM_mass_spring_clear_forces().

◆ init_fmatrix()

BLI_INLINE void init_fmatrix ( fmatrix3x3 matrix,
int  r,
int  c 
)

Definition at line 535 of file implicit_blender.c.

References Freestyle::c, fmatrix3x3::c, r, and fmatrix3x3::r.

Referenced by create_bfmatrix(), and SIM_mass_spring_add_block().

◆ init_lfvector()

DO_INLINE void init_lfvector ( float(*)  fLongVector[3],
const float  vector[3],
unsigned int  verts 
)

Definition at line 143 of file implicit_blender.c.

References copy_v3_v3(), and verts.

◆ initdiag_bfmatrix()

DO_INLINE void initdiag_bfmatrix ( fmatrix3x3 matrix,
float  m3[3][3] 
)

Definition at line 587 of file implicit_blender.c.

References cp_fmatrix(), fmatrix3x3::scount, and fmatrix3x3::vcount.

Referenced by SIM_mass_spring_solver_create().

◆ initdiag_fmatrixS()

DO_INLINE void initdiag_fmatrixS ( float  to[3][3],
float  aS 
)

Definition at line 358 of file implicit_blender.c.

References cp_fmatrix(), and ZERO.

◆ madd_m3_m3fl()

BLI_INLINE void madd_m3_m3fl ( float  r[3][3],
const float  m[3][3],
float  f 
)

Definition at line 505 of file implicit_blender.c.

References r.

Referenced by SIM_mass_spring_force_spring_bending_hair().

◆ mul_bfmatrix_lfvector()

DO_INLINE void mul_bfmatrix_lfvector ( float(*)  to[3],
fmatrix3x3 from,
lfVector fLongVector 
)

◆ mul_fmatrix_fvector()

DO_INLINE void mul_fmatrix_fvector ( float to,
const float  matrix[3][3],
const float  from[3] 
)

Definition at line 427 of file implicit_blender.c.

References dot_v3v3(), and from.

◆ mul_fmatrix_S()

DO_INLINE void mul_fmatrix_S ( float  matrix[3][3],
float  scalar 
)

Definition at line 409 of file implicit_blender.c.

References mul_fvector_S().

◆ mul_fvector_fmatrix()

DO_INLINE void mul_fvector_fmatrix ( float to,
const float from,
const float  matrix[3][3] 
)

Definition at line 418 of file implicit_blender.c.

References from.

◆ mul_fvector_S()

DO_INLINE void mul_fvector_S ( float  to[3],
const float  from[3],
float  scalar 
)

Definition at line 77 of file implicit_blender.c.

References from.

Referenced by mul_fmatrix_S(), mul_fvectorT_fvector(), mul_fvectorT_fvectorS(), and mul_lfvectorS().

◆ mul_fvectorT_fvector()

DO_INLINE void mul_fvectorT_fvector ( float  to[3][3],
const float  vectorA[3],
const float  vectorB[3] 
)

◆ mul_fvectorT_fvectorS()

DO_INLINE void mul_fvectorT_fvectorS ( float  to[3][3],
float  vectorA[3],
float  vectorB[3],
float  aS 
)

Definition at line 93 of file implicit_blender.c.

References mul_fvector_S(), and mul_fvectorT_fvector().

◆ mul_lfvectorS()

DO_INLINE void mul_lfvectorS ( float(*)  to[3],
float(*)  fLongVector[3],
float  scalar,
unsigned int  verts 
)

Definition at line 156 of file implicit_blender.c.

References mul_fvector_S(), and verts.

◆ muladd_fmatrix_fvector()

DO_INLINE void muladd_fmatrix_fvector ( float  to[3],
const float  matrix[3][3],
const float  from[3] 
)

Definition at line 464 of file implicit_blender.c.

References dot_v3v3(), and from.

Referenced by mul_bfmatrix_lfvector().

◆ muladd_fmatrixT_fvector()

DO_INLINE void muladd_fmatrixT_fvector ( float  to[3],
const float  matrix[3][3],
const float  from[3] 
)

Definition at line 471 of file implicit_blender.c.

References from.

Referenced by mul_bfmatrix_lfvector().

◆ outerproduct()

BLI_INLINE void outerproduct ( float  r[3][3],
const float  a[3],
const float  b[3] 
)

◆ poly_avg()

BLI_INLINE void poly_avg ( lfVector data,
const int *  inds,
int  len,
float  r_avg[3] 
)

Definition at line 1871 of file implicit_blender.c.

References data, float(), len, madd_v3_v3fl(), and zero_v3().

Referenced by poly_norm(), and spring_angle().

◆ poly_norm()

BLI_INLINE void poly_norm ( lfVector data,
int  i,
int  j,
int *  inds,
int  len,
float  r_dir[3] 
)

Definition at line 1882 of file implicit_blender.c.

References data, len, normal_tri_v3(), and poly_avg().

Referenced by spring_angle().

◆ root_to_world_m3()

BLI_INLINE void root_to_world_m3 ( Implicit_Data data,
int  index,
float  r[3][3],
const float  m[3][3] 
)

Definition at line 748 of file implicit_blender.c.

References data, mul_m3_m3m3(), and r.

◆ root_to_world_v3()

BLI_INLINE void root_to_world_v3 ( Implicit_Data data,
int  index,
float  r[3],
const float  v[3] 
)

◆ SIM_mass_spring_add_block()

static int SIM_mass_spring_add_block ( Implicit_Data data,
int  v1,
int  v2 
)
static

Definition at line 1272 of file implicit_blender.c.

References BLI_assert, data, init_fmatrix(), M, v1, and v2.

Referenced by apply_spring(), and SIM_mass_spring_force_spring_bending_hair().

◆ SIM_mass_spring_add_constraint_ndof0()

void SIM_mass_spring_add_constraint_ndof0 ( Implicit_Data data,
int  index,
const float  dV[3] 
)

Definition at line 1299 of file implicit_blender.c.

References data, world_to_root_v3(), and zero_m3().

Referenced by cloth_setup_constraints().

◆ SIM_mass_spring_add_constraint_ndof1()

void SIM_mass_spring_add_constraint_ndof1 ( Implicit_Data data,
int  index,
const float  c1[3],
const float  c2[3],
const float  dV[3] 
)

◆ SIM_mass_spring_add_constraint_ndof2()

void SIM_mass_spring_add_constraint_ndof2 ( Implicit_Data data,
int  index,
const float  c1[3],
const float  dV[3] 
)

◆ SIM_mass_spring_apply_result()

void SIM_mass_spring_apply_result ( Implicit_Data data)

Definition at line 1185 of file implicit_blender.c.

References cp_lfvector(), and data.

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_clear_constraints()

void SIM_mass_spring_clear_constraints ( Implicit_Data data)

Definition at line 1290 of file implicit_blender.c.

References data, unit_m3(), and zero_v3().

Referenced by cloth_setup_constraints().

◆ SIM_mass_spring_clear_forces()

void SIM_mass_spring_clear_forces ( struct Implicit_Data data)

Clear the force vector at the beginning of the time step.

Definition at line 1345 of file implicit_blender.c.

References data, init_bfmatrix(), ZERO, and zero_lfvector().

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_force_drag()

void SIM_mass_spring_force_drag ( struct Implicit_Data data,
float  drag 
)

Global drag force (velocity damping).

Definition at line 1420 of file implicit_blender.c.

References add_m3_m3m3(), copy_m3_m3(), data, I, madd_v3_v3fl(), and mul_m3_fl().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_edge_wind()

void SIM_mass_spring_force_edge_wind ( struct Implicit_Data data,
int  v1,
int  v2,
float  radius1,
float  radius2,
const float(*)  winvec[3] 
)

Wind force, acting on an edge.

Definition at line 1617 of file implicit_blender.c.

References add_v3_v3(), data, edge_wind_vertex(), blender::math::length(), normalize_v3(), sub_v3_v3v3(), v1, v2, and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_extern()

void SIM_mass_spring_force_extern ( struct Implicit_Data data,
int  i,
const float  f[3],
float  dfdx[3][3],
float  dfdv[3][3] 
)

Custom external force.

Definition at line 1435 of file implicit_blender.c.

References add_m3_m3m3(), add_v3_v3(), data, world_to_root_m3(), and world_to_root_v3().

◆ SIM_mass_spring_force_face_extern()

void SIM_mass_spring_force_face_extern ( struct Implicit_Data data,
int  v1,
int  v2,
int  v3,
const float(*)  forcevec[3] 
)

Arbitrary per-unit-area vector force field acting on a face..

Definition at line 1505 of file implicit_blender.c.

References add_v3_v3(), blender::compositor::area(), calc_nor_area_tri(), data, mul_v3_fl(), nor, v1, v2, world_to_root_v3(), and zero_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_face_wind()

void SIM_mass_spring_force_face_wind ( struct Implicit_Data data,
int  v1,
int  v2,
int  v3,
const float(*)  winvec[3] 
)

Wind force, acting on a face (only generates pressure from the normal component).

Definition at line 1462 of file implicit_blender.c.

References blender::compositor::area(), calc_nor_area_tri(), data, dot_v3v3(), madd_v3_v3fl(), mul_v3_fl(), nor, v1, v2, and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_gravity()

void SIM_mass_spring_force_gravity ( struct Implicit_Data data,
int  index,
float  mass,
const float  g[3] 
)

Simple uniform gravity force.

Definition at line 1410 of file implicit_blender.c.

References add_v3_v3(), data, usdtokens::g(), mul_v3_fl(), and world_to_root_v3().

Referenced by cloth_calc_force().

◆ SIM_mass_spring_force_pressure()

void SIM_mass_spring_force_pressure ( Implicit_Data data,
int  v1,
int  v2,
int  v3,
float  common_pressure,
const float vertex_pressure,
const float  weights[3] 
)

◆ SIM_mass_spring_force_reference_frame()

void SIM_mass_spring_force_reference_frame ( struct Implicit_Data data,
int  index,
const float  acceleration[3],
const float  omega[3],
const float  domega_dt[3],
float  mass 
)

Fictitious forces introduced by moving coordinate systems.

Definition at line 1355 of file implicit_blender.c.

References add_m3_m3m3(), add_v3_v3(), copy_m3_m3(), cross_m3_v3m3(), cross_v3_identity(), cross_v3_v3v3(), data, mul_m3_fl(), mul_v3_fl(), negate_m3(), sub_v3_v3(), sub_v3_v3v3(), void, w(), and world_to_root_v3().

◆ SIM_mass_spring_force_spring_angular()

bool SIM_mass_spring_force_spring_angular ( struct Implicit_Data data,
int  i,
int  j,
int *  i_a,
int *  i_b,
int  len_a,
int  len_b,
float  restang,
float  stiffness,
float  damping 
)

Angular spring force between two polygons.

Definition at line 1948 of file implicit_blender.c.

References add_v3_v3(), add_v3_v3v3(), angle(), data, dot_v3v3(), mul_v3_v3fl(), spring_angle(), sub_v3_v3(), and x.

Referenced by cloth_calc_spring_force().

◆ SIM_mass_spring_force_spring_bending()

bool SIM_mass_spring_force_spring_bending ( struct Implicit_Data data,
int  i,
int  j,
float  restlen,
float  kb,
float  cb 
)

Bending force, forming a triangle at the base of two structural springs.

Definition at line 1842 of file implicit_blender.c.

References apply_spring(), data, fbstar(), fbstar_jacobi(), blender::math::length(), mul_m3_fl(), mul_v3_v3fl(), outerproduct(), spring_length(), and zero_m3().

Referenced by cloth_calc_spring_force().

◆ SIM_mass_spring_force_spring_bending_hair()

bool SIM_mass_spring_force_spring_bending_hair ( struct Implicit_Data data,
int  i,
int  j,
int  k,
const float  target[3],
float  stiffness,
float  damping 
)

◆ SIM_mass_spring_force_spring_goal()

bool SIM_mass_spring_force_spring_goal ( struct Implicit_Data data,
int  i,
const float  goal_x[3],
const float  goal_v[3],
float  stiffness,
float  damping 
)

◆ SIM_mass_spring_force_spring_linear()

bool SIM_mass_spring_force_spring_linear ( struct Implicit_Data data,
int  i,
int  j,
float  restlen,
float  stiffness_tension,
float  damping_tension,
float  stiffness_compression,
float  damping_compression,
bool  resist_compress,
bool  new_compress,
float  clamp_force 
)

◆ SIM_mass_spring_force_vertex_wind()

void SIM_mass_spring_force_vertex_wind ( Implicit_Data data,
int  v,
float   UNUSEDradius,
const float(*)  winvec[3] 
)

◆ SIM_mass_spring_get_motion_state()

void SIM_mass_spring_get_motion_state ( struct Implicit_Data data,
int  index,
float  x[3],
float  v[3] 
)

◆ SIM_mass_spring_get_new_position()

void SIM_mass_spring_get_new_position ( struct Implicit_Data data,
int  index,
float  x[3] 
)

Definition at line 1250 of file implicit_blender.c.

References data, root_to_world_v3(), and x.

Referenced by cloth_solve_collisions().

◆ SIM_mass_spring_get_new_velocity()

void SIM_mass_spring_get_new_velocity ( struct Implicit_Data data,
int  index,
float  v[3] 
)

◆ SIM_mass_spring_get_position()

void SIM_mass_spring_get_position ( struct Implicit_Data data,
int  index,
float  x[3] 
)

◆ SIM_mass_spring_get_velocity()

void SIM_mass_spring_get_velocity ( struct Implicit_Data data,
int  index,
float  v[3] 
)

Definition at line 1245 of file implicit_blender.c.

References data, root_to_world_v3(), and v.

Referenced by cloth_calc_average_acceleration().

◆ SIM_mass_spring_set_motion_state()

void SIM_mass_spring_set_motion_state ( Implicit_Data data,
int  index,
const float  x[3],
const float  v[3] 
)

Definition at line 1208 of file implicit_blender.c.

References data, v, world_to_root_v3(), and x.

Referenced by SIM_cloth_solver_init(), and SIM_cloth_solver_set_positions().

◆ SIM_mass_spring_set_new_position()

void SIM_mass_spring_set_new_position ( struct Implicit_Data data,
int  index,
const float  x[3] 
)

Definition at line 1255 of file implicit_blender.c.

References data, world_to_root_v3(), and x.

◆ SIM_mass_spring_set_new_velocity()

void SIM_mass_spring_set_new_velocity ( struct Implicit_Data data,
int  index,
const float  v[3] 
)

Definition at line 1265 of file implicit_blender.c.

References data, v, and world_to_root_v3().

Referenced by cloth_continuum_step(), and cloth_solve_collisions().

◆ SIM_mass_spring_set_position()

void SIM_mass_spring_set_position ( Implicit_Data data,
int  index,
const float  x[3] 
)

Definition at line 1217 of file implicit_blender.c.

References data, world_to_root_v3(), and x.

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_set_rest_transform()

void SIM_mass_spring_set_rest_transform ( Implicit_Data data,
int  index,
float  tfm[3][3] 
)

Definition at line 1198 of file implicit_blender.c.

References copy_m3_m3(), data, unit_m3(), and void.

Referenced by SIM_cloth_solver_set_positions().

◆ SIM_mass_spring_set_velocity()

void SIM_mass_spring_set_velocity ( Implicit_Data data,
int  index,
const float  v[3] 
)

Definition at line 1222 of file implicit_blender.c.

References data, v, and world_to_root_v3().

Referenced by SIM_cloth_solve().

◆ SIM_mass_spring_set_vertex_mass()

void SIM_mass_spring_set_vertex_mass ( Implicit_Data data,
int  index,
float  mass 
)

Definition at line 1192 of file implicit_blender.c.

References data, mul_m3_fl(), and unit_m3().

Referenced by SIM_mass_spring_set_implicit_vertex_mass().

◆ SIM_mass_spring_solve_positions()

bool SIM_mass_spring_solve_positions ( Implicit_Data data,
float  dt 
)

Definition at line 1175 of file implicit_blender.c.

References add_lfvector_lfvectorS(), and data.

Referenced by cloth_solve_collisions(), and SIM_cloth_solve().

◆ SIM_mass_spring_solve_velocities()

bool SIM_mass_spring_solve_velocities ( Implicit_Data data,
float  dt,
ImplicitSolverResult result 
)

◆ SIM_mass_spring_solver_create()

Implicit_Data* SIM_mass_spring_solver_create ( int  numverts,
int  numsprings 
)

Definition at line 672 of file implicit_blender.c.

References create_bfmatrix(), create_lfvector(), I, id, initdiag_bfmatrix(), and MEM_callocN.

Referenced by SIM_cloth_solver_init().

◆ SIM_mass_spring_solver_free()

void SIM_mass_spring_solver_free ( Implicit_Data id)

Definition at line 700 of file implicit_blender.c.

References del_bfmatrix(), del_lfvector(), id, and MEM_freeN.

Referenced by SIM_cloth_solver_free().

◆ SIM_tri_area()

float SIM_tri_area ( struct Implicit_Data data,
int  v1,
int  v2,
int  v3 
)

Definition at line 1542 of file implicit_blender.c.

References calc_nor_area_tri(), data, nor, v1, and v2.

Referenced by cloth_calc_average_pressure().

◆ SIM_tri_tetra_volume_signed_6x()

float SIM_tri_tetra_volume_signed_6x ( Implicit_Data data,
int  v1,
int  v2,
int  v3 
)

Definition at line 1536 of file implicit_blender.c.

References data, v1, v2, and volume_tri_tetrahedron_signed_v3_6x().

Referenced by cloth_calc_volume().

◆ spring_angle()

BLI_INLINE void spring_angle ( Implicit_Data data,
int  i,
int  j,
int *  i_a,
int *  i_b,
int  len_a,
int  len_b,
float  r_dir_a[3],
float  r_dir_b[3],
float r_angle,
float  r_vel_a[3],
float  r_vel_b[3] 
)

◆ spring_grad_dir()

BLI_INLINE void spring_grad_dir ( Implicit_Data data,
int  i,
int  j,
float  edge[3],
float  dir[3],
float  grad_dir[3][3] 
)

◆ spring_hairbend_estimate_dfdv()

BLI_INLINE void spring_hairbend_estimate_dfdv ( Implicit_Data data,
int  i,
int  j,
int  k,
const float  goal[3],
float  stiffness,
float  damping,
int  q,
float  dfdv[3][3] 
)

◆ spring_hairbend_estimate_dfdx()

BLI_INLINE void spring_hairbend_estimate_dfdx ( Implicit_Data data,
int  i,
int  j,
int  k,
const float  goal[3],
float  stiffness,
float  damping,
int  q,
float  dfdx[3][3] 
)

◆ spring_hairbend_forces()

BLI_INLINE void spring_hairbend_forces ( Implicit_Data data,
int  i,
int  j,
int  k,
const float  goal[3],
float  stiffness,
float  damping,
int  q,
const float  dx[3],
const float  dv[3],
float  r_f[3] 
)

◆ spring_length()

BLI_INLINE bool spring_length ( Implicit_Data data,
int  i,
int  j,
float  r_extent[3],
float  r_dir[3],
float r_length,
float  r_vel[3] 
)

◆ sub_fmatrix_fmatrix()

DO_INLINE void sub_fmatrix_fmatrix ( float  to[3][3],
const float  matrixA[3][3],
const float  matrixB[3][3] 
)

Definition at line 451 of file implicit_blender.c.

References sub_v3_v3v3().

◆ sub_lfvector_lfvector()

DO_INLINE void sub_lfvector_lfvector ( float(*)  to[3],
float(*)  fLongVectorA[3],
float(*)  fLongVectorB[3],
unsigned int  verts 
)

Definition at line 248 of file implicit_blender.c.

References sub_v3_v3v3(), and verts.

Referenced by cg_filtered().

◆ sub_lfvector_lfvectorS()

DO_INLINE void sub_lfvector_lfvectorS ( float(*)  to[3],
float(*)  fLongVectorA[3],
float(*)  fLongVectorB[3],
float  bS,
unsigned int  verts 
)

Definition at line 236 of file implicit_blender.c.

References VECSUBS, and verts.

◆ subadd_bfmatrixS_bfmatrixS()

DO_INLINE void subadd_bfmatrixS_bfmatrixS ( fmatrix3x3 to,
fmatrix3x3 from,
float  aS,
fmatrix3x3 matrix,
float  bS 
)

◆ subadd_fmatrixS_fmatrixS()

DO_INLINE void subadd_fmatrixS_fmatrixS ( float  to[3][3],
const float  matrixA[3][3],
float  aS,
const float  matrixB[3][3],
float  bS 
)

Definition at line 443 of file implicit_blender.c.

References VECSUBADDSS.

Referenced by subadd_bfmatrixS_bfmatrixS().

◆ submul_lfvectorS()

DO_INLINE void submul_lfvectorS ( float(*)  to[3],
float(*)  fLongVector[3],
float  scalar,
unsigned int  verts 
)

Definition at line 169 of file implicit_blender.c.

References VECSUBMUL, and verts.

◆ world_to_root_m3()

BLI_INLINE void world_to_root_m3 ( Implicit_Data data,
int  index,
float  r[3][3],
const float  m[3][3] 
)

Definition at line 737 of file implicit_blender.c.

References copy_m3_m3(), data, mul_m3_m3m3(), r, and transpose_m3().

Referenced by SIM_mass_spring_force_extern().

◆ world_to_root_v3()

BLI_INLINE void world_to_root_v3 ( Implicit_Data data,
int  index,
float  r[3],
const float  v[3] 
)

◆ zero_lfvector()

DO_INLINE void zero_lfvector ( float(*)  to[3],
unsigned int  verts 
)

Variable Documentation

◆ I

float I[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
static

◆ ZERO

float ZERO[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
static

Definition at line 44 of file implicit_blender.c.

Referenced by initdiag_fmatrixS(), and SIM_mass_spring_clear_forces().