Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
agg::trans_affine_scaling Class Reference

#include <src/agg/agg_trans_affine.h>

+ Inheritance diagram for agg::trans_affine_scaling:
+ Collaboration diagram for agg::trans_affine_scaling:

Public Member Functions

 trans_affine_scaling (double x, double y)
 
 trans_affine_scaling (double s)
 
const trans_affineparl_to_parl (const double *src, const double *dst)
 
const trans_affinerect_to_parl (double x1, double y1, double x2, double y2, const double *parl)
 
const trans_affineparl_to_rect (const double *parl, double x1, double y1, double x2, double y2)
 
const trans_affinereset ()
 
const trans_affinetranslate (double x, double y)
 
const trans_affinerotate (double a)
 
const trans_affinescale (double s)
 
const trans_affinescale (double x, double y)
 
double scale () const
 
const trans_affinemultiply (const trans_affine &m)
 
const trans_affinepremultiply (const trans_affine &m)
 
const trans_affinemultiply_inv (const trans_affine &m)
 
const trans_affinepremultiply_inv (const trans_affine &m)
 
const trans_affineinvert ()
 
const trans_affineflip_x ()
 
const trans_affineflip_y ()
 
void store_to (double *m) const
 
const trans_affineload_from (const double *m)
 
const trans_affineoperator*= (const trans_affine &m)
 
const trans_affineoperator/= (const trans_affine &m)
 
trans_affine operator* (const trans_affine &m) const
 
trans_affine operator/ (const trans_affine &m) const
 
trans_affine operator~ () const
 
bool operator== (const trans_affine &m) const
 
bool operator!= (const trans_affine &m) const
 
void transform (double *x, double *y) const
 
void transform_2x2 (double *x, double *y) const
 
void inverse_transform (double *x, double *y) const
 
double determinant () const
 
double determinant_reciprocal () const
 
bool is_valid (double epsilon=affine_epsilon) const
 
bool is_identity (double epsilon=affine_epsilon) const
 
bool is_equal (const trans_affine &m, double epsilon=affine_epsilon) const
 
double rotation () const
 
void translation (double *dx, double *dy) const
 
void scaling (double *x, double *y) const
 
void scaling_abs (double *x, double *y) const
 

Public Attributes

double sx
 
double shy
 
double shx
 
double sy
 
double tx
 
double ty
 

Detailed Description

Constructor & Destructor Documentation

◆ trans_affine_scaling() [1/2]

agg::trans_affine_scaling::trans_affine_scaling ( double  x,
double  y 
)
inline
429 :
430 trans_affine(x, 0.0, 0.0, y, 0.0, 0.0)
431 {}
trans_affine()
Definition agg_trans_affine.h:93

◆ trans_affine_scaling() [2/2]

agg::trans_affine_scaling::trans_affine_scaling ( double  s)
inline
433 :
434 trans_affine(s, 0.0, 0.0, s, 0.0, 0.0)
435 {}

Member Function Documentation

◆ determinant()

double agg::trans_affine::determinant ( ) const
inlineinherited
260 {
261 return sx * sy - shy * shx;
262 }
double sx
Definition agg_trans_affine.h:89
double sy
Definition agg_trans_affine.h:89
double shx
Definition agg_trans_affine.h:89
double shy
Definition agg_trans_affine.h:89

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, and agg::trans_affine::sy.

◆ determinant_reciprocal()

double agg::trans_affine::determinant_reciprocal ( ) const
inlineinherited
266 {
267 return 1.0 / (sx * sy - shy * shx);
268 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, and agg::trans_affine::sy.

Referenced by agg::trans_affine::inverse_transform().

+ Here is the caller graph for this function:

◆ flip_x()

const trans_affine & agg::trans_affine::flip_x ( )
inherited

◆ flip_y()

const trans_affine & agg::trans_affine::flip_y ( )
inherited

◆ inverse_transform()

void agg::trans_affine::inverse_transform ( double *  x,
double *  y 
) const
inlineinherited
310 {
311 double d = determinant_reciprocal();
312 double a = (*x - tx) * d;
313 double b = (*y - ty) * d;
314 *x = a * sy - b * shx;
315 *y = b * sx - a * shy;
316 }
const Scalar & y
Definition MathFunctions.h:552
TCoord< P > x(const P &p)
Definition geometry_traits.hpp:297
double ty
Definition agg_trans_affine.h:89
double tx
Definition agg_trans_affine.h:89
double determinant_reciprocal() const
Definition agg_trans_affine.h:265

References agg::trans_affine::determinant_reciprocal(), agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

+ Here is the call graph for this function:

◆ invert()

const trans_affine & agg::trans_affine::invert ( )
inherited

Referenced by agg::trans_affine::multiply_inv(), agg::trans_affine::operator~(), and agg::trans_affine::premultiply_inv().

+ Here is the caller graph for this function:

◆ is_equal()

bool agg::trans_affine::is_equal ( const trans_affine m,
double  epsilon = affine_epsilon 
) const
inherited

Referenced by agg::trans_affine::operator!=(), and agg::trans_affine::operator==().

+ Here is the caller graph for this function:

◆ is_identity()

bool agg::trans_affine::is_identity ( double  epsilon = affine_epsilon) const
inherited

◆ is_valid()

bool agg::trans_affine::is_valid ( double  epsilon = affine_epsilon) const
inherited

◆ load_from()

const trans_affine & agg::trans_affine::load_from ( const double *  m)
inlineinherited
193 {
194 sx = *m++; shy = *m++; shx = *m++; sy = *m++; tx = *m++; ty = *m++;
195 return *this;
196 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

◆ multiply()

const trans_affine & agg::trans_affine::multiply ( const trans_affine m)
inherited

Referenced by agg::trans_affine_line_segment::trans_affine_line_segment(), agg::trans_affine::multiply_inv(), agg::trans_affine::operator*=(), agg::trans_affine::premultiply(), and agg::trans_affine::premultiply_inv().

+ Here is the caller graph for this function:

◆ multiply_inv()

const trans_affine & agg::trans_affine::multiply_inv ( const trans_affine m)
inlineinherited
387 {
388 trans_affine t = m;
389 t.invert();
390 return multiply(t);
391 }
const trans_affine & multiply(const trans_affine &m)

References agg::trans_affine::invert(), and agg::trans_affine::multiply().

Referenced by agg::trans_affine::operator/=().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator!=()

bool agg::trans_affine::operator!= ( const trans_affine m) const
inlineinherited
241 {
242 return !is_equal(m, affine_epsilon);
243 }
const double affine_epsilon
Definition agg_trans_affine.h:27
bool is_equal(const trans_affine &m, double epsilon=affine_epsilon) const

References agg::affine_epsilon, and agg::trans_affine::is_equal().

+ Here is the call graph for this function:

◆ operator*()

trans_affine agg::trans_affine::operator* ( const trans_affine m) const
inlineinherited
215 {
216 return trans_affine(*this).multiply(m);
217 }

References agg::trans_affine::trans_affine().

+ Here is the call graph for this function:

◆ operator*=()

const trans_affine & agg::trans_affine::operator*= ( const trans_affine m)
inlineinherited
202 {
203 return multiply(m);
204 }

References agg::trans_affine::multiply().

+ Here is the call graph for this function:

◆ operator/()

trans_affine agg::trans_affine::operator/ ( const trans_affine m) const
inlineinherited
222 {
223 return trans_affine(*this).multiply_inv(m);
224 }

References agg::trans_affine::trans_affine().

+ Here is the call graph for this function:

◆ operator/=()

const trans_affine & agg::trans_affine::operator/= ( const trans_affine m)
inlineinherited
208 {
209 return multiply_inv(m);
210 }
const trans_affine & multiply_inv(const trans_affine &m)
Definition agg_trans_affine.h:386

References agg::trans_affine::multiply_inv().

+ Here is the call graph for this function:

◆ operator==()

bool agg::trans_affine::operator== ( const trans_affine m) const
inlineinherited
235 {
236 return is_equal(m, affine_epsilon);
237 }

References agg::affine_epsilon, and agg::trans_affine::is_equal().

+ Here is the call graph for this function:

◆ operator~()

trans_affine agg::trans_affine::operator~ ( ) const
inlineinherited
228 {
229 trans_affine ret = *this;
230 return ret.invert();
231 }

References agg::trans_affine::invert().

+ Here is the call graph for this function:

◆ parl_to_parl()

const trans_affine & agg::trans_affine::parl_to_parl ( const double *  src,
const double *  dst 
)
inherited

Referenced by agg::trans_affine::trans_affine().

+ Here is the caller graph for this function:

◆ parl_to_rect()

const trans_affine & agg::trans_affine::parl_to_rect ( const double *  parl,
double  x1,
double  y1,
double  x2,
double  y2 
)
inherited

Referenced by agg::trans_affine::trans_affine().

+ Here is the caller graph for this function:

◆ premultiply()

const trans_affine & agg::trans_affine::premultiply ( const trans_affine m)
inlineinherited
380 {
381 trans_affine t = m;
382 return *this = t.multiply(*this);
383 }

References agg::trans_affine::multiply().

+ Here is the call graph for this function:

◆ premultiply_inv()

const trans_affine & agg::trans_affine::premultiply_inv ( const trans_affine m)
inlineinherited
395 {
396 trans_affine t = m;
397 t.invert();
398 return *this = t.multiply(*this);
399 }

References agg::trans_affine::invert(), and agg::trans_affine::multiply().

+ Here is the call graph for this function:

◆ rect_to_parl()

const trans_affine & agg::trans_affine::rect_to_parl ( double  x1,
double  y1,
double  x2,
double  y2,
const double *  parl 
)
inherited

Referenced by agg::trans_affine::trans_affine().

+ Here is the caller graph for this function:

◆ reset()

const trans_affine & agg::trans_affine::reset ( )
inherited

◆ rotate()

const trans_affine & agg::trans_affine::rotate ( double  a)
inlineinherited
336 {
337 double ca = cos(a);
338 double sa = sin(a);
339 double t0 = sx * ca - shy * sa;
340 double t2 = shx * ca - sy * sa;
341 double t4 = tx * ca - ty * sa;
342 shy = sx * sa + shy * ca;
343 sy = shx * sa + sy * ca;
344 ty = tx * sa + ty * ca;
345 sx = t0;
346 shx = t2;
347 tx = t4;
348 return *this;
349 }
EIGEN_DEVICE_FUNC const CosReturnType cos() const
Definition ArrayCwiseUnaryOps.h:202
EIGEN_DEVICE_FUNC const SinReturnType sin() const
Definition ArrayCwiseUnaryOps.h:220

References cos(), agg::trans_affine::shx, agg::trans_affine::shy, sin(), agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

+ Here is the call graph for this function:

◆ rotation()

double agg::trans_affine::rotation ( ) const
inherited

◆ scale() [1/3]

double agg::trans_affine::scale ( ) const
inlineinherited
320 {
321 double x = 0.707106781 * sx + 0.707106781 * shx;
322 double y = 0.707106781 * shy + 0.707106781 * sy;
323 return sqrt(x*x + y*y);
324 }
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
Definition ArrayCwiseUnaryOps.h:152

References agg::trans_affine::shx, agg::trans_affine::shy, sqrt(), agg::trans_affine::sx, and agg::trans_affine::sy.

+ Here is the call graph for this function:

◆ scale() [2/3]

const trans_affine & agg::trans_affine::scale ( double  s)
inlineinherited
367 {
368 double m = s; // Possible hint for the optimizer
369 sx *= m;
370 shx *= m;
371 tx *= m;
372 shy *= m;
373 sy *= m;
374 ty *= m;
375 return *this;
376 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

◆ scale() [3/3]

const trans_affine & agg::trans_affine::scale ( double  x,
double  y 
)
inlineinherited
353 {
354 double mm0 = x; // Possible hint for the optimizer
355 double mm3 = y;
356 sx *= mm0;
357 shx *= mm0;
358 tx *= mm0;
359 shy *= mm3;
360 sy *= mm3;
361 ty *= mm3;
362 return *this;
363 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

◆ scaling()

void agg::trans_affine::scaling ( double *  x,
double *  y 
) const
inherited

◆ scaling_abs()

void agg::trans_affine::scaling_abs ( double *  x,
double *  y 
) const
inlineinherited
403 {
404 // Used to calculate scaling coefficients in image resampling.
405 // When there is considerable shear this method gives us much
406 // better estimation than just sx, sy.
407 *x = sqrt(sx * sx + shx * shx);
408 *y = sqrt(shy * shy + sy * sy);
409 }

References agg::trans_affine::shx, agg::trans_affine::shy, sqrt(), agg::trans_affine::sx, and agg::trans_affine::sy.

+ Here is the call graph for this function:

◆ store_to()

void agg::trans_affine::store_to ( double *  m) const
inlineinherited
187 {
188 *m++ = sx; *m++ = shy; *m++ = shx; *m++ = sy; *m++ = tx; *m++ = ty;
189 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

◆ transform()

void agg::trans_affine::transform ( double *  x,
double *  y 
) const
inlineinherited
294 {
295 double tmp = *x;
296 *x = tmp * sx + *y * shx + tx;
297 *y = tmp * shy + *y * sy + ty;
298 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, agg::trans_affine::sy, agg::trans_affine::tx, and agg::trans_affine::ty.

◆ transform_2x2()

void agg::trans_affine::transform_2x2 ( double *  x,
double *  y 
) const
inlineinherited
302 {
303 double tmp = *x;
304 *x = tmp * sx + *y * shx;
305 *y = tmp * shy + *y * sy;
306 }

References agg::trans_affine::shx, agg::trans_affine::shy, agg::trans_affine::sx, and agg::trans_affine::sy.

◆ translate()

const trans_affine & agg::trans_affine::translate ( double  x,
double  y 
)
inlineinherited
328 {
329 tx += x;
330 ty += y;
331 return *this;
332 }

References agg::trans_affine::tx, and agg::trans_affine::ty.

◆ translation()

void agg::trans_affine::translation ( double *  dx,
double *  dy 
) const
inherited

Member Data Documentation

◆ shx

◆ shy

◆ sx

◆ sy

◆ tx

◆ ty


The documentation for this class was generated from the following file: