sources:
attribute.cpp (1.1k)
attribute.h (1.5k)
cgapplication.cpp (4.1k)
cgapplication.h (4.8k)
cgrobot.cpp (7.9k)
cgrobot.h (716 bytes)
node.cpp (2.4k)
node.h (2.3k)
shape.cpp (3.2k)
shape.h (966 bytes)
transformation.cpp (2.9k)
transformation.h (2.4k)
vector.cpp (1.4k)
vector.h (5.3k)


website:
more info here


screenshot:
studies/grafik/Computergrafik-Code8/vector.cpp
download file

  1 // Computergraphik I
  2 // Prof. Dr. Juergen Doellner
  3 // Sommersemester 2001
  4 //
  5 // Rahmenprogramm fuer Aufgabenzettel 8
  6
  7 #include "vector.h"
  8 #include <math.h>
  9 #include <string.h>
 10
 11 bool Vector::operator<(const Vector& u) const {
 12     return((v_[0]<u.v_[0]) ||
 13            (v_[0]==u.v_[0] && v_[1]<u.v_[1]) ||
 14            (v_[0]==u.v_[0] && v_[1]==u.v_[1] && v_[2]<u.v_[2])
 15     )
;
 16 }
 17
 18 Vector& Vector::operator*=(const Vector& u) { // cross product
 19     double x = v_[0];
 20     double y = v_[1];
 21     double z = v_[2];
 22     v_[0] = y*u.v_[2] - z*u.v_[1];
 23     v_[1] = z*u.v_[0] - x*u.v_[2];
 24     v_[2] = x*u.v_[1] - y*u.v_[0];
 25     return *this;
 26 }
 27
 28 Vector Vector::normalized() const {
 29     double L = sqrt(v_[0]*v_[0] + v_[1]*v_[1] + v_[2]*v_[2]);
 30     if(fabs(L) == 0.0) {
 31         return Vector(0,0,0);
 32     } else {
 33         return Vector(v_[0]/L, v_[1]/L, v_[2]/L);
 34     }
 35 }
 36
 37 bool Vector::normalize() {
 38     double L = sqrt(v_[0]*v_[0] + v_[1]*v_[1] + v_[2]*v_[2]);
 39     if(fabs(L) == 0.0) {
 40         return false;
 41     } else {
 42         v_[0] /= L;
 43         v_[1] /= L;
 44         v_[2] /= L;
 45         return true;
 46     }
 47 }
 48
 49 //
 50 // IO
 51 //
 52
 53 ostream& operator<<(ostream& s, const Vector& u) {
 54     s << u[0] << " " << u[1] << " " << u[2];
 55     return s;
 56 }
 57
 58 istream& operator>>(istream& s, Vector& u) {
 59
 60     s >> u[0];
 61     if(!s.good()) { return s; }
 62    
 63     s >> u[1];
 64     if(!s.good()) { return s; }
 65
 66     s >> u[2];
 67     if(!s.good()) { return s; }
 68
 69     return s;
 70 }
 71