Blender  V3.3
Macros | Functions
quadric.c File Reference
#include "BLI_math.h"
#include "BLI_strict_flags.h"
#include "BLI_quadric.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 T44780.

Definition in file quadric.c.

Macro Definition Documentation

◆ QUADRIC_FLT_TOT

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

Definition at line 24 of file quadric.c.

Function Documentation

◆ BLI_quadric_add_qu_qu()

void BLI_quadric_add_qu_qu ( Quadric a,
const Quadric b 
)

◆ BLI_quadric_add_qu_ququ()

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

Definition at line 115 of file quadric.c.

References Freestyle::a, add_vn_vnvn_d(), usdtokens::b(), QUADRIC_FLT_TOT, and r.

Referenced by bm_decim_calc_target_co_db().

◆ BLI_quadric_clear()

void BLI_quadric_clear ( Quadric q)

Definition at line 105 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 120 of file quadric.c.

References Freestyle::a, 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 98 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 71 of file quadric.c.

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

Referenced by BLI_quadric_optimize().