/home/oan/prosjekt/gotools/segmentation/gpl_distro/lsseg_1.0_gpl/src/EigValComp3x3.C File Reference

Implements EigValComp3x3.h. More...

#include <assert.h>
#include <math.h>
#include "EigValComp3x3.h"
#include <iostream>
#include <limits>

Go to the source code of this file.

Namespaces

namespace  lsseg

Functions

void xprod (const double *const u, const double *const v, double *res)
double norm2 (const double *v)
void normalize (double *v)
void find_non_collinear (const double *const v, double *res)
void find_kernel (const double *const col1, const double *const col2, const double *const col3, double *ker)
void givens (const double a, const double b, double &c, double &s)
void apply_givens (const double c, const double s, double &alpha1, double &alpha2, double &alpha3, double &beta, double &delta, double &corner)
void apply_givens (const double c, const double s, double &alpha1, double &alpha2, double &beta)
void post_mul_givens (const double c, const double s, double *u, double *v)
void construct_eigvecs (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3)
void lsseg::analytic_eigvals (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3)
 Compute the eigenvalues of a 3x3 symmetric matrix by analytically solving the corresponding characteristic polynomial.
void lsseg::analytic_eigsys (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3)
 Compute the eigenvalues and eigenvectors of a 3x3 symmetric matrix by analytically solving the corresponding characteristic polynomial to find the eigenvalues, and then explicitly constructing the corresponding eigenvectors.
void lsseg::numeric_eigsys (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3)
 Compute the eigenvalues and eigenvectors of a 3x3 symmetric matrix by means of an iterative numerical algorithm using Householder transformations and Givens rotations.
void find_kernel (const double *const col1, const double *const col2, const double *const col3, double *ker)
void construct_eigvecs (double alpha1, double alpha2, double alpha3, double beta, double gamma, double delta, double &lambda1, double &lambda2, double &lambda3, double *v1, double *v2, double *v3)

Variables

const double EPS = numeric_limits<double>::epsilon()
const double PI = 3.1415926535897932384
const double THIRD = double(1)/3
const double TW7TH = double(1)/27
double tempvec1 [3]
double tempvec2 [3]
double tempvec3 [3]


Detailed Description

Implements EigValComp3x3.h.

Definition in file EigValComp3x3.C.


Function Documentation

void @1::apply_givens ( const double  c,
const double  s,
double &  alpha1,
double &  alpha2,
double &  beta 
) [static]

Definition at line 135 of file EigValComp3x3.C.

void @1::apply_givens ( const double  c,
const double  s,
double &  alpha1,
double &  alpha2,
double &  alpha3,
double &  beta,
double &  delta,
double &  corner 
) [static]

Definition at line 117 of file EigValComp3x3.C.

void @2::construct_eigvecs ( double  alpha1,
double  alpha2,
double  alpha3,
double  beta,
double  gamma,
double  delta,
double &  lambda1,
double &  lambda2,
double &  lambda3,
double *  v1,
double *  v2,
double *  v3 
) [static]

Definition at line 409 of file EigValComp3x3.C.

void @1::construct_eigvecs ( double  alpha1,
double  alpha2,
double  alpha3,
double  beta,
double  gamma,
double  delta,
double &  lambda1,
double &  lambda2,
double &  lambda3,
double *  v1,
double *  v2,
double *  v3 
) [static]

void @2::find_kernel ( const double *const   col1,
const double *const   col2,
const double *const   col3,
double *  ker 
) [static]

Definition at line 372 of file EigValComp3x3.C.

void @1::find_kernel ( const double *const   col1,
const double *const   col2,
const double *const   col3,
double *  ker 
) [static]

void @1::find_non_collinear ( const double *const   v,
double *  res 
) [inline, static]

Definition at line 81 of file EigValComp3x3.C.

void @1::givens ( const double  a,
const double  b,
double &  c,
double &  s 
) [inline, static]

Definition at line 99 of file EigValComp3x3.C.

double @1::norm2 ( const double *  v  )  [inline, static]

Definition at line 70 of file EigValComp3x3.C.

void @1::normalize ( double *  v  )  [inline, static]

Definition at line 73 of file EigValComp3x3.C.

void @1::post_mul_givens ( const double  c,
const double  s,
double *  u,
double *  v 
) [static]

Definition at line 148 of file EigValComp3x3.C.

void @1::xprod ( const double *const   u,
const double *const   v,
double *  res 
) [inline, static]

Definition at line 63 of file EigValComp3x3.C.


Variable Documentation

const double EPS = numeric_limits<double>::epsilon() [static]

Definition at line 58 of file EigValComp3x3.C.

const double PI = 3.1415926535897932384 [static]

Definition at line 59 of file EigValComp3x3.C.

double tempvec1[3] [static]

Definition at line 367 of file EigValComp3x3.C.

double tempvec2[3] [static]

Definition at line 368 of file EigValComp3x3.C.

double tempvec3[3] [static]

Definition at line 369 of file EigValComp3x3.C.

const double THIRD = double(1)/3 [static]

Definition at line 60 of file EigValComp3x3.C.

const double TW7TH = double(1)/27 [static]

Definition at line 61 of file EigValComp3x3.C.


Generated on Tue Nov 28 18:35:47 2006 for lsseg by  doxygen 1.4.7