#include <HxVec3Double.h>
Constructors | |
| HxVec3Double () | |
| Default constructor. More... | |
| HxVec3Double (double x, double y, double z) | |
| Conversion from native type. More... | |
| HxVec3Double (const HxVec3Double &v) | |
| Copy constructor. More... | |
Inquiry | |
| int | dim () const | 
| Dimensionality. More... | |
| double | x () const | 
| Value of first element. More... | |
| double | y () const | 
| Value of second element. More... | |
| double | z () const | 
| Value of third element. More... | |
| double | getValue (int dimension) const | 
| Element in given dimension. More... | |
| void | setValue (int dimension, double value) | 
Conversion | |
| operator HxScalarInt () const | |
| Cast to HxScalarInt. More... | |
| operator HxScalarDouble () const | |
| Cast to HxScalarDouble. More... | |
| operator HxVec2Int () const | |
| Cast to HxVec2Int. More... | |
| operator HxVec2Double () const | |
| Cast to HxVec2Double. More... | |
| operator HxVec3Int () const | |
| Cast to HxVec3Int. More... | |
| operator HxComplex () const | |
| Cast to HxComplex. More... | |
Operators | |
| Mathematical definition: Binary operations on pixel values | |
| int | operator== (const HxVec3Double &v) const | 
| Equal. More... | |
| int | operator!= (const HxVec3Double &v) const | 
| Not equal. More... | |
| int | operator< (const HxVec3Double &v) const | 
| Less than. More... | |
| int | operator<= (const HxVec3Double &v) const | 
| Less equal. More... | |
| int | operator> (const HxVec3Double &v) const | 
| Greater than. More... | |
| int | operator>= (const HxVec3Double &v) const | 
| Greater equal. More... | |
| const HxVec3Double | SMALL_VAL = HxVec3Double(0, 0, 0) | 
| A small value w.r.t to the comparison operators "<" and ">". More... | |
| const HxVec3Double | LARGE_VAL = HxVec3Double(1e300, 1e300, 1e300) | 
| A large value w.r.t to the comparison operators "<" and ">". More... | |
Unary operations | |
| Mathematical definition: Unary operations on pixel values | |
| HxVec3Double | operator- () const | 
| Negation. More... | |
| HxVec3Double | complement () const | 
| Complement. More... | |
| HxVec3Double | abs () const | 
| Absolute value. More... | |
| HxVec3Double | ceil () const | 
| Ceiling. More... | |
| HxVec3Double | floor () const | 
| Floor. More... | |
| HxVec3Double | round () const | 
| Round. More... | |
| HxScalarDouble | sum () const | 
| Sum. More... | |
| HxScalarDouble | product () const | 
| Product. More... | |
| HxScalarDouble | min () const | 
| Minimum. More... | |
| HxScalarDouble | max () const | 
| Maximum. More... | |
| HxScalarDouble | norm1 () const | 
| L1 norm. More... | |
| HxScalarDouble | norm2 () const | 
| L2 norm. More... | |
| HxScalarDouble | normInf () const | 
| L infinity norm. More... | |
| HxVec3Double | sqrt () const | 
| Square root. More... | |
| HxVec3Double | sin () const | 
| Sine. More... | |
| HxVec3Double | cos () const | 
| Cosine. More... | |
| HxVec3Double | tan () const | 
| Tangent. More... | |
| HxVec3Double | asin () const | 
| Arc sine. More... | |
| HxVec3Double | acos () const | 
| Arc cosine. More... | |
| HxVec3Double | atan () const | 
| Arc tangent. More... | |
| HxScalarDouble | atan2 () const | 
| Arc tangent. More... | |
| HxVec3Double | sinh () const | 
| Hyperbolic sine. More... | |
| HxVec3Double | cosh () const | 
| Hyperbolic cosine. More... | |
| HxVec3Double | tanh () const | 
| Hyperbolic tangent. More... | |
| HxVec3Double | exp () const | 
| Exponent. More... | |
| HxVec3Double | log () const | 
| Natural logarithm. More... | |
| HxVec3Double | log10 () const | 
| Base 10 logarithm. More... | |
Binary operations | |
| Mathematical definition: Binary operations on pixel values | |
| HxVec3Double & | operator+= (const HxVec3Double &v) | 
| Addition and assignment. More... | |
| HxVec3Double & | operator-= (const HxVec3Double &v) | 
| Subtraction and assignment. More... | |
| HxVec3Double & | operator *= (const HxVec3Double &v) | 
| Multiplication and assignment. More... | |
| HxVec3Double & | operator/= (const HxVec3Double &v) | 
| Division and assignment. More... | |
| HxVec3Double | min (const HxVec3Double &v) const | 
| Minimum. More... | |
| HxVec3Double & | minAssign (const HxVec3Double &v) | 
| Minimum and assignment. More... | |
| HxVec3Double | max (const HxVec3Double &v) const | 
| Maximum. More... | |
| HxVec3Double & | maxAssign (const HxVec3Double &v) | 
| Maximum and assignment. More... | |
| HxVec3Double | inf (const HxVec3Double &v) const | 
| Infimum. More... | |
| HxVec3Double & | infAssign (const HxVec3Double &v) | 
| Infimum and assignment. More... | |
| HxVec3Double | sup (const HxVec3Double &v) const | 
| Supremum. More... | |
| HxVec3Double & | supAssign (const HxVec3Double &v) | 
| Supremum and assignment. More... | |
| HxVec3Double | pow (const HxVec3Double &v) const | 
| Power. More... | |
| HxVec3Double | mod (const HxVec3Double &v) const | 
| Modulo. More... | |
| HxVec3Double | and (const HxVec3Double &v) const | 
| And. More... | |
| HxVec3Double | or (const HxVec3Double &v) const | 
| Or. More... | |
| HxVec3Double | xor (const HxVec3Double &v) const | 
| Xor. More... | |
| HxVec3Double | leftShift (const HxVec3Double &v) const | 
| Left shift. More... | |
| HxVec3Double | rightShift (const HxVec3Double &v) const | 
| Right shift. More... | |
| HxScalarDouble | dot (const HxVec3Double &v) const | 
| Dot product. More... | |
| HxVec3Double | cross (const HxVec3Double &v) const | 
| Cross product. More... | |
| HxVec3Double | operator+ (const HxVec3Double &v1, const HxVec3Double &v2) | 
| Addition. More... | |
| HxVec3Double | operator- (const HxVec3Double &v1, const HxVec3Double &v2) | 
| Subtraction. More... | |
| HxVec3Double | operator * (const HxVec3Double &v1, const HxVec3Double &v2) | 
| Multiplication. More... | |
| HxVec3Double | operator/ (const HxVec3Double &v1, const HxVec3Double &v2) | 
| Division. More... | |
Output | |
| STD_OSTREAM & | put (STD_OSTREAM &os) const | 
| Print value on stream. More... | |
| HxString | toString () const | 
| Value as a string. More... | |
Public Methods | |
| void * | operator new (size_t, void *=0) | 
      
  | 
  
| 
 Default constructor. 
 
 00323 { 
00324 }
 | 
  
      
  | 
  ||||||||||||||||
| 
 Conversion from native type. 
 
  | 
  
      
  | 
  
| 
 Copy constructor. 
 
  | 
  
      
  | 
  
| 
 Dimensionality. 
 
 00350 {
00351     return 3;
00352 }
 | 
  
      
  | 
  
| 
 Value of first element. 
 
 00356 {
00357     return _values[0];
00358 }
 | 
  
      
  | 
  
| 
 Value of second element. 
 
 00362 {
00363     return _values[1];
00364 }
 | 
  
      
  | 
  
| 
 Value of third element. 
 
 00368 {
00369     return _values[2];
00370 }
 | 
  
      
  | 
  
| 
 Element in given dimension. 
 
 00374 {
00375     return _values[dimension - 1];
00376 }
 | 
  
      
  | 
  
| 
 Cast to HxScalarInt. 
 
 00028 {
00029     return (int) _values[0];
00030 }
 | 
  
      
  | 
  
| 
 Cast to HxScalarDouble. 
 
 00033 {
00034     return _values[0];
00035 }
 | 
  
      
  | 
  
| 
 Cast to HxVec2Int. 
 
 00038 {
00039     return HxVec2Int(int(_values[0]), int(_values[1]));
00040 }
 | 
  
      
  | 
  
| 
 Cast to HxVec2Double. 
 
 00043 {
00044     return HxVec2Double(_values[0], _values[1]);
00045 }
 | 
  
      
  | 
  
| 
 Cast to HxVec3Int. 
 
 00048 {
00049     return HxVec3Int(int(_values[0]), int(_values[1]), int(_values[2]));
00050 }
 | 
  
      
  | 
  
| 
 Cast to HxComplex. 
 
 00053 {
00054     return HxComplex(_values[0], _values[1]);
00055 }
 | 
  
      
  | 
  
| 
 Equal. 
 
  | 
  
      
  | 
  
| 
 Not equal. 
 
  | 
  
      
  | 
  
| 
 Less than. 
 
  | 
  
      
  | 
  
| 
 Less equal. 
 
  | 
  
      
  | 
  
| 
 Greater than. 
 
  | 
  
      
  | 
  
| 
 Greater equal. 
 
  | 
  
      
  | 
  
| 
 Negation. 
 
 00428 {
00429     return HxVec3Double(-_values[0], -_values[1], -_values[2]);
00430 }
 | 
  
      
  | 
  
| 
 Complement. 
 
 00434 {
00435     return HxVec3Double(-_values[0], -_values[1], -_values[2]);
00436 }
 | 
  
      
  | 
  
| 
 Absolute value. 
 
 00440 {
00441     return HxVec3Double(fabs(_values[0]), fabs(_values[1]), fabs(_values[2]));
00442 }
 | 
  
      
  | 
  
| 
 Ceiling. 
 
 00446 {
00447     return HxVec3Double(::ceil(_values[0]),
00448                         ::ceil(_values[1]),
00449                         ::ceil(_values[2]));
00450 }
 | 
  
      
  | 
  
| 
 Floor. 
 
 00454 {
00455     return HxVec3Double(::floor(_values[0]),
00456                         ::floor(_values[1]),
00457                         ::floor(_values[2]));
00458 }
 | 
  
      
  | 
  
| 
 Round. 
 
 00462 {
00463     return HxVec3Double((int) (_values[0] + ((_values[0] >= 0) ? 0.5 : -0.5)),
00464                         (int) (_values[1] + ((_values[1] >= 0) ? 0.5 : -0.5)),
00465                         (int) (_values[2] + ((_values[2] >= 0) ? 0.5 : -0.5)));
00466 }
 | 
  
      
  | 
  
| 
 Sum. 
 
 00470 {
00471     return _values[0] + _values[1] + _values[2];
00472 }
 | 
  
      
  | 
  
| 
 Product. 
 
 00476 {
00477     return _values[0] * _values[1] * _values[2];
00478 }
 | 
  
      
  | 
  
| 
 Minimum. 
 
 00059 {
00060     return (_values[0] < _values[1]) ?
00061         ((_values[0] < _values[2]) ? _values[0] : _values[2]) :
00062         ((_values[1] < _values[2]) ? _values[1] : _values[2]);
00063 }
 | 
  
      
  | 
  
| 
 Maximum. 
 
 00067 {
00068     return (_values[0] > _values[1]) ?
00069         ((_values[0] > _values[2]) ? _values[0] : _values[2]) :
00070         ((_values[1] > _values[2]) ? _values[1] : _values[2]);
00071 }
 | 
  
      
  | 
  
| 
 L1 norm. 
 
 00075 {
00076     return fabs(_values[0]) + fabs(_values[1]) + fabs(_values[2]);
00077 }
 | 
  
      
  | 
  
| 
 L2 norm. 
 
 00081 {
00082     return ::sqrt(_values[0]*_values[0] +
00083                   _values[1]*_values[1] +
00084                   _values[2]*_values[2]);
00085 }
 | 
  
      
  | 
  
| 
 L infinity norm. 
 
 00089 {
00090     return (fabs(_values[0]) > fabs(_values[1])) ?
00091         ((fabs(_values[0]) > fabs(_values[2])) ? fabs(_values[0]) :
00092                                                     fabs(_values[2])) :
00093         ((fabs(_values[1]) > fabs(_values[2])) ? fabs(_values[1]) :
00094                                                     fabs(_values[2]));
00095 }
 | 
  
      
  | 
  
| 
 Square root. 
 
 00482 {
00483     return HxVec3Double(::sqrt(_values[0]),
00484                         ::sqrt(_values[1]),
00485                         ::sqrt(_values[2]));
00486 }
 | 
  
      
  | 
  
| 
 Sine. 
 
 00490 {
00491     return HxVec3Double(::sin(_values[0]),
00492                         ::sin(_values[1]),
00493                         ::sin(_values[2]));
00494 }
 | 
  
      
  | 
  
| 
 Cosine. 
 
 00498 {
00499     return HxVec3Double(::cos(_values[0]),
00500                         ::cos(_values[1]),
00501                         ::cos(_values[2]));
00502 }
 | 
  
      
  | 
  
| 
 Tangent. 
 
 00506 {
00507     return HxVec3Double(::tan(_values[0]),
00508                         ::tan(_values[1]),
00509                         ::tan(_values[2]));
00510 }
 | 
  
      
  | 
  
| 
 Arc sine. 
 
 00514 {
00515     return HxVec3Double(::asin(_values[0]),
00516                         ::asin(_values[1]),
00517                         ::asin(_values[2]));
00518 }
 | 
  
      
  | 
  
| 
 Arc cosine. 
 
 00522 {
00523     return HxVec3Double(::acos(_values[0]),
00524                         ::acos(_values[1]),
00525                         ::acos(_values[2]));
00526 }
 | 
  
      
  | 
  
| 
 Arc tangent. 
 
 00530 {
00531     return HxVec3Double(::atan(_values[0]),
00532                         ::atan(_values[1]),
00533                         ::atan(_values[2]));
00534 }
 | 
  
      
  | 
  
| 
 Arc tangent. 
 
 00099 {
00100     return HxScalarDouble(::atan2(_values[0], _values[1]));
00101 }
 | 
  
      
  | 
  
| 
 Hyperbolic sine. 
 
 00538 {
00539     return HxVec3Double(::sinh(_values[0]),
00540                         ::sinh(_values[1]),
00541                         ::sinh(_values[2]));
00542 }
 | 
  
      
  | 
  
| 
 Hyperbolic cosine. 
 
 00546 {
00547     return HxVec3Double(::cosh(_values[0]),
00548                         ::cosh(_values[1]),
00549                         ::cosh(_values[2]));
00550 }
 | 
  
      
  | 
  
| 
 Hyperbolic tangent. 
 
 00554 {
00555     return HxVec3Double(::tanh(_values[0]),
00556                         ::tanh(_values[1]),
00557                         ::tanh(_values[2]));
00558 }
 | 
  
      
  | 
  
| 
 Exponent. 
 
 00562 {
00563     return HxVec3Double(::exp(_values[0]),
00564                         ::exp(_values[1]),
00565                         ::exp(_values[2]));
00566 }
 | 
  
      
  | 
  
| 
 Natural logarithm. 
 
 00570 {
00571     return HxVec3Double(::log(_values[0]),
00572                         ::log(_values[1]),
00573                         ::log(_values[2]));
00574 }
 | 
  
      
  | 
  
| 
 Base 10 logarithm. 
 
 00578 {
00579     return HxVec3Double(::log10(_values[0]),
00580                         ::log10(_values[1]),
00581                         ::log10(_values[2]));
00582 }
 | 
  
      
  | 
  
| 
 Addition and assignment. 
 
  | 
  
      
  | 
  
| 
 Subtraction and assignment. 
 
  | 
  
      
  | 
  
| 
 Multiplication and assignment. 
 
  | 
  
      
  | 
  
| 
 Division and assignment. 
 
  | 
  
      
  | 
  
| 
 Minimum. 
 
 00654 {
00655     return (operator<(v)) ? (*this) : v;
00656 }
 | 
  
      
  | 
  
| 
 Minimum and assignment. 
 
 00660 {
00661     if (operator<(v))
00662         return *this;
00663     operator=(v);
00664     return *this;
00665 }
 | 
  
      
  | 
  
| 
 Maximum. 
 
 00669 {
00670     return (operator>(v)) ? (*this) : v;
00671 }
 | 
  
      
  | 
  
| 
 Maximum and assignment. 
 
 00675 {
00676     if (operator>(v))
00677         return *this;
00678     operator=(v);
00679     return *this;
00680 }
 | 
  
      
  | 
  
| 
 Infimum. 
 
  | 
  
      
  | 
  
| 
 Infimum and assignment. 
 
  | 
  
      
  | 
  
| 
 Supremum. 
 
  | 
  
      
  | 
  
| 
 Supremum and assignment. 
 
  | 
  
      
  | 
  
| 
 Power. 
 
  | 
  
      
  | 
  
| 
 Modulo. 
 
 00726 {
00727     return (*this);
00728 }
 | 
  
      
  | 
  
| 
 And. 
 
 00732 {
00733     return (*this);
00734 }
 | 
  
      
  | 
  
| 
 Or. 
 
 00738 {
00739     return (*this);
00740 }
 | 
  
      
  | 
  
| 
 Xor. 
 
 00744 {
00745     return (*this);
00746 }
 | 
  
      
  | 
  
| 
 Left shift. 
 
 00750 {
00751     return (*this);
00752 }
 | 
  
      
  | 
  
| 
 Right shift. 
 
 00756 {
00757     return (*this);
00758 }
 | 
  
      
  | 
  
| 
 Dot product. 
 
  | 
  
      
  | 
  
| 
 Cross product. 
 
  | 
  
      
  | 
  
| 
 Print value on stream. For global operator<< 
 00113 {
00114     return os << "(" << _values[0] << "," << _values[1] << "," <<
00115         _values[2] << ")";
00116 }
 | 
  
      
  | 
  
| 
 Value as a string. 
 
 00119                              {
00120     return HxString("(") + makeString(_values[0]) + ", "
00121             + makeString(_values[1]) + ", "
00122             + makeString(_values[2]) + ")";
00123 }
 | 
  
      
  | 
  ||||||||||||
| 
 Addition. 
 
  | 
  
      
  | 
  ||||||||||||
| 
 Subtraction. 
 
  | 
  
      
  | 
  ||||||||||||
| 
 Multiplication. 
 
  | 
  
      
  | 
  ||||||||||||
| 
 Division. 
 
  | 
  
      
  | 
  
| 
 A small value w.r.t to the comparison operators "<" and ">". Not actually the minimum to avoid overflow.  | 
  
      
  | 
  
| 
 A large value w.r.t to the comparison operators "<" and ">". Not actually the maximum to avoid overflow.  | 
  
1.2.12 written by Dimitri van Heesch,
 © 1997-2001