Blender V4.3
quadric.c File Reference
#include <string.h>
#include "BLI_math_base.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_quadric.h"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Macros

#define QUADRIC_FLT_TOT   (sizeof(Quadric) / sizeof(double))
 

Functions

void BLI_quadric_from_plane (Quadric *q, const double v[4])
 
static bool quadric_to_tensor_m3_inverse (const Quadric *q, double m[3][3], double epsilon)
 
void BLI_quadric_to_vector_v3 (const Quadric *q, double v[3])
 
void BLI_quadric_clear (Quadric *q)
 
void BLI_quadric_add_qu_qu (Quadric *a, const Quadric *b)
 
void BLI_quadric_add_qu_ququ (Quadric *r, const Quadric *a, const Quadric *b)
 
void BLI_quadric_mul (Quadric *a, const double scalar)
 
double BLI_quadric_evaluate (const Quadric *q, const double v[3])
 
bool BLI_quadric_optimize (const Quadric *q, double v[3], const double epsilon)
 

Detailed Description

Note
This isn't fully complete, possible there are other useful functions to add here.
follow BLI_math naming convention here.
this uses doubles for internal calculations, even though input/output are floats in some cases.

This is done because the cases quadrics are useful often need high precision, see #44780.

Definition in file quadric.c.

Macro Definition Documentation

◆ QUADRIC_FLT_TOT

#define QUADRIC_FLT_TOT   (sizeof(Quadric) / sizeof(double))

Definition at line 29 of file quadric.c.

Referenced by BLI_quadric_add_qu_qu(), BLI_quadric_add_qu_ququ(), and BLI_quadric_mul().

Function Documentation

◆ BLI_quadric_add_qu_qu()

void BLI_quadric_add_qu_qu ( Quadric * a,
const Quadric * b )

Definition at line 115 of file quadric.c.

References add_vn_vn_d(), b, and QUADRIC_FLT_TOT.

Referenced by bm_decim_build_quadrics(), and bm_decim_edge_collapse().

◆ BLI_quadric_add_qu_ququ()

void BLI_quadric_add_qu_ququ ( Quadric * r,
const Quadric * a,
const Quadric * b )

Definition at line 120 of file quadric.c.

References add_vn_vnvn_d(), b, and QUADRIC_FLT_TOT.

Referenced by bm_decim_calc_target_co_db().

◆ BLI_quadric_clear()

void BLI_quadric_clear ( Quadric * q)

Definition at line 110 of file quadric.c.

◆ BLI_quadric_evaluate()

double BLI_quadric_evaluate ( const Quadric * q,
const double v[3] )

◆ BLI_quadric_from_plane()

void BLI_quadric_from_plane ( Quadric * q,
const double v[4] )

◆ BLI_quadric_mul()

void BLI_quadric_mul ( Quadric * a,
const double scalar )

Definition at line 125 of file quadric.c.

References mul_vn_db(), and QUADRIC_FLT_TOT.

Referenced by bm_decim_build_quadrics().

◆ BLI_quadric_optimize()

bool BLI_quadric_optimize ( const Quadric * q,
double v[3],
const double epsilon )

◆ BLI_quadric_to_vector_v3()

void BLI_quadric_to_vector_v3 ( const Quadric * q,
double v[3] )

Definition at line 103 of file quadric.c.

References Quadric::ad, Quadric::bd, Quadric::cd, and v.

Referenced by BLI_quadric_optimize().

◆ quadric_to_tensor_m3_inverse()

static bool quadric_to_tensor_m3_inverse ( const Quadric * q,
double m[3][3],
double epsilon )
static

Inline inverse matrix creation. Equivalent of:

quadric_to_tensor_m3(q, m);
invert_m3_db(m, eps);
const btScalar eps
Definition poly34.cpp:11

Definition at line 76 of file quadric.c.

References Quadric::a2, Quadric::ab, Quadric::ac, Quadric::b2, Quadric::bc, Quadric::c2, and fabs().

Referenced by BLI_quadric_optimize().