• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kstars

  • sources
  • kde-4.12
  • kdeedu
  • kstars
  • kstars
  • ekos
  • guide
vect.h
Go to the documentation of this file.
1 /* Ekos guide tool
2  Copyright (C) 2012 Andrew Stepanenko
3 
4  Modified by Jasem Mutlaq <mutlaqja@ikarustech.com> for KStars.
5 
6  This application is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10  */
11 
12 //---------------------------------------------------------------------------
13 #ifndef vectH
14 #define vectH
15 
16 #include <math.h>
17 
18 class Vector
19 {
20  public:
21  double x,y,z;
22  Vector () { x = y = z = 0.0; };
23  explicit Vector ( double v ) { x = y = z = v; };
24  Vector ( const Vector& v ) { x = v.x; y = v.y; z = v.z; };
25  Vector ( double vx, double vy, double vz ) { x = vx; y = vy; z = vz; };
26  ~Vector(){};
27 
28  Vector& operator = (const Vector& v) {x = v.x;
29  y = v.y;
30  z = v.z;
31  return *this;
32  };
33  Vector& operator = (double f) {x = y = z = f;
34  return *this;
35  };
36  Vector operator - () const;
37  Vector& operator += ( const Vector& );
38  Vector& operator -= ( const Vector& );
39  Vector& operator *= ( const Vector& );
40  Vector& operator *= ( double );
41  Vector& operator /= ( double );
42 
43  friend Vector operator + ( const Vector&, const Vector& );
44  friend Vector operator - ( const Vector&, const Vector& );
45  friend Vector operator * ( const Vector&, const Vector& );
46  friend Vector operator * ( double, const Vector& );
47  friend Vector operator * ( const Vector&, double );
48  friend Vector operator / ( const Vector&, double );
49  friend Vector operator / ( const Vector&, const Vector& );
50  friend double operator & ( const Vector& u, const Vector& v )
51  {
52  return u.x*v.x + u.y*v.y + u.z*v.z;
53  };
54  friend Vector operator ^ ( const Vector&, const Vector& );
55  double operator ! () const {return (double)sqrt(x*x+y*y+z*z);};
56  double& operator [] (int n) {return * (&x + n);};
57  int operator < (double v) {return x<v && y<v && z<v;};
58  int operator > (double v) {return x>v && y>v && z>v;};
59 };
60 
61 class Ray
62 {
63  public:
64  Vector Org;
65  Vector Dir; // Must be normalized
66  Ray () {};
67  Ray& operator = (const Ray& r) {Org = r.Org;
68  Dir = r.Dir;
69  return *this;
70  };
71 
72  Ray ( Vector& o, Vector& d ) { Org = o; Dir = d;};
73  ~Ray(){};
74  Vector Point ( double t ) {return Org + Dir*t;};
75 };
76 
77 inline Vector Vector :: operator - () const
78 {
79  return Vector( -x, -y, -z );
80 }
81 
82 inline Vector operator + (const Vector& u, const Vector& v)
83 {
84  return Vector( u.x+v.x, u.y+v.y, u.z+v.z );
85 }
86 
87 inline Vector operator - (const Vector& u, const Vector& v)
88 {
89  return Vector( u.x-v.x, u.y-v.y, u.z-v.z );
90 }
91 
92 inline Vector operator * (const Vector& u, const Vector& v)
93 {
94  return Vector( u.x*v.x, u.y*v.y, u.z*v.z );
95 }
96 
97 inline Vector operator * (const Vector& u, double f)
98 {
99  return Vector( u.x*f, u.y*f, u.z*f );
100 }
101 
102 inline Vector operator * (double f, const Vector& v)
103 {
104  return Vector( f*v.x, f*v.y, f*v.z );
105 }
106 
107 inline Vector operator / (const Vector& v, double f)
108 {
109  return Vector( v.x/f, v.y/f, v.z/f );
110 }
111 
112 inline Vector operator / (const Vector& u, const Vector& v)
113 {
114  return Vector( u.x/v.x, u.y/v.y, u.z/v.z );
115 }
116 
117 inline Vector& Vector :: operator += (const Vector& v)
118 {
119  x += v.x;
120  y += v.y;
121  z += v.z;
122  return *this;
123 }
124 
125 inline Vector& Vector :: operator -= (const Vector& v)
126 {
127  x -= v.x;
128  y -= v.y;
129  z -= v.z;
130  return *this;
131 }
132 
133 inline Vector& Vector :: operator *= (double v)
134 {
135  x *= v;
136  y *= v;
137  z *= v;
138  return *this;
139 }
140 
141 inline Vector& Vector :: operator *= (const Vector& v)
142 {
143  x *= v.x;
144  y *= v.y;
145  z *= v.z;
146  return *this;
147 }
148 
149 inline Vector& Vector :: operator /= (double v)
150 {
151  x /= v;
152  y /= v;
153  z /= v;
154  return *this;
155 }
156 
158 inline Vector Normalize ( const Vector& v ) {return v / !v; };
159 Vector RndVector ();
160 Vector& Clip ( Vector& );
161 //---------------------------------------------------------------------------
162 #endif
Vector::Vector
Vector(const Vector &v)
Definition: vect.h:24
Vector::x
double x
Definition: vect.h:21
Ray::Point
Vector Point(double t)
Definition: vect.h:74
Vector::operator[]
double & operator[](int n)
Definition: vect.h:56
Vector::operator^
friend Vector operator^(const Vector &, const Vector &)
Definition: vect.cpp:21
Vector
Definition: vect.h:18
Vector::operator-=
Vector & operator-=(const Vector &)
Definition: vect.h:125
Vector::operator*=
Vector & operator*=(const Vector &)
Definition: vect.h:141
Vector::Vector
Vector()
Definition: vect.h:22
Ray::~Ray
~Ray()
Definition: vect.h:73
Vector::operator&
friend double operator&(const Vector &u, const Vector &v)
Definition: vect.h:50
Vector::operator<
int operator<(double v)
Definition: vect.h:57
Ray::Dir
Vector Dir
Definition: vect.h:65
Ray::Ray
Ray(Vector &o, Vector &d)
Definition: vect.h:72
Vector::operator-
Vector operator-() const
Definition: vect.h:77
NaN::f
const float f
Definition: nan.h:36
Vector::operator!
double operator!() const
Definition: vect.h:55
Vector::operator>
int operator>(double v)
Definition: vect.h:58
Ray::Ray
Ray()
Definition: vect.h:66
Vector::z
double z
Definition: vect.h:21
operator-
Vector operator-(const Vector &u, const Vector &v)
Definition: vect.h:87
Vector::~Vector
~Vector()
Definition: vect.h:26
Ray
Definition: vect.h:61
Vector::operator+
friend Vector operator+(const Vector &, const Vector &)
Definition: vect.h:82
Vector::Vector
Vector(double vx, double vy, double vz)
Definition: vect.h:25
Normalize
Vector Normalize(const Vector &v)
Definition: vect.h:158
RndVector
Vector RndVector()
Definition: vect.cpp:29
Ray::Org
Vector Org
Definition: vect.h:64
Clip
Vector & Clip(Vector &)
Definition: vect.cpp:37
Vector::Vector
Vector(double v)
Definition: vect.h:23
operator/
Vector operator/(const Vector &v, double f)
Definition: vect.h:107
Vector::operator*
friend Vector operator*(const Vector &, const Vector &)
Definition: vect.h:92
Vector::operator=
Vector & operator=(const Vector &v)
Definition: vect.h:28
NaN::d
const double d
Definition: nan.h:35
Vector::operator/=
Vector & operator/=(double)
Definition: vect.h:149
Vector::operator/
friend Vector operator/(const Vector &, double)
Definition: vect.h:107
operator*
Vector operator*(const Vector &u, const Vector &v)
Definition: vect.h:92
operator+
Vector operator+(const Vector &u, const Vector &v)
Definition: vect.h:82
Vector::operator+=
Vector & operator+=(const Vector &)
Definition: vect.h:117
Ray::operator=
Ray & operator=(const Ray &r)
Definition: vect.h:67
Vector::y
double y
Definition: vect.h:21
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:36:21 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kstars

Skip menu "kstars"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal