UltraScan III
us_vector.cpp
Go to the documentation of this file.
1 
3 #include "us_vector.h"
4 #include "us_math2.h"
5 
6 US_Vector::US_Vector( int size, double value )
7 {
8  v.fill( value, size );
9 };
10 
11 
12 void US_Vector::add( const US_Vector& other )
13 {
14  Q_ASSERT( other.size() == v.size() );
15 
16  for ( int i = 0; i < v.size(); i++ )
17  v[ i ] += other[ i ];
18 }
19 
20 void US_Vector::add( double value )
21 {
22  for ( int i = 0; i < v.size(); i++ )
23  v[ i ] += value;
24 }
25 
26 double US_Vector::dot( const US_Vector& other )
27 {
28  Q_ASSERT( other.size() == v.size() );
29 
30  double value = 0.0;
31 
32  for ( int i = 0; i < v.size(); i++ )
33  value += v[ i ] * other[ i ];
34 
35  return value;
36 }
37 
38 void US_Vector::mult( const US_Vector& other )
39 {
40  Q_ASSERT( other.size() == v.size() );
41 
42  for ( int i = 0; i < v.size(); i++ )
43  v[ i ] *= other[ i ];
44 }
45 
46 void US_Vector::scale( double value )
47 {
48  for ( int i = 0; i < v.size(); i++ )
49  v[ i ] *= value;
50 }
51 
52 double US_Vector::distance( const US_Vector& other )
53 {
54  Q_ASSERT( other.size() == v.size() );
55  double value = 0.0;
56 
57  for ( int i = 0; i < v.size(); i++ )
58  value += sq( v[ i ] - other[ i ] );
59 
60  return sqrt( value );
61 }
62 
63 double US_Vector::L2norm( void )
64 {
65  double value = 0.0;
66 
67  for ( int i = 0; i < v.size(); i++ )
68  value += sq( v[ i ] );
69 
70  return sqrt( value );
71 }
72