Hellko

asd

Mar 12th, 2013
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.63 KB | None | 0 0
  1. class tetraedr {
  2. protected:
  3.     vector v1,v2,v3,v4;                                 //points tetraedr
  4. public:
  5.     tetraedr(void);                                     //default constructor
  6.     tetraedr(const tetraedr&);                          //copy constructor
  7.     tetraedr(vector,vector,vector,vector);              //constructor
  8.     double Vol();                                       //volume tetraedr
  9.     double Sbok();                                      //square side cover
  10.     vector& operator[](int);                            //select point!
  11.     friend const tetraedr& operator ++(tetraedr&);      //prefix inc
  12.     friend const tetraedr operator ++(tetraedr&, int);  //postfix inc
  13.     void operator =(const tetraedr&);
  14. };
  15. bool operator >(tetraedr,tetraedr);         //tetraedr > tetraedr
  16. bool operator <=(tetraedr,tetraedr);   //inverse *up*
  17. bool operator <(tetraedr,tetraedr);         //tetraedr < tetraedr
  18. bool operator >=(tetraedr,tetraedr);   //inverse *up*
  19. bool operator ==(tetraedr,tetraedr);   //tetraedr == tetraedr
  20. bool operator !=(tetraedr,tetraedr);   //inverse *up*
  21. tetraedr operator +(tetraedr,tetraedr);     //tetraedr + tetraedr
  22. void print(tetraedr, const char[255]=" ");  //Print tetraedr.
  23. tetraedr operator *(double,tetraedr);       //K*TETRAEDR
  24.  
  25. /////////////////////////////////////////////////////////////////
  26. /////////////////////////////////////////////////////////////////
  27.  
  28. void tetraedr::operator =(const tetraedr& A) {
  29.     v1=A.v1;
  30.     v2=A.v2;
  31.     v3=A.v3;
  32.     v4=A.v4;
  33. }
  34.  
  35.  
  36. //SRAVNENIYA
  37. bool operator >(tetraedr A, tetraedr B) {
  38.     return (A.Vol()>B.Vol())
  39.             ?   1
  40.             :   0;
  41. }
  42. bool operator <=(tetraedr A, tetraedr B) {
  43.     return B>A;
  44. }
  45. bool operator <(tetraedr A, tetraedr B) {
  46.     return (A.Vol()<B.Vol())
  47.             ?   1
  48.             :   0;
  49. }
  50. bool operator >=(tetraedr A, tetraedr B) {
  51.     return B<A;
  52. }
  53. bool operator ==(tetraedr A, tetraedr B) {
  54.     return (fabs(A.Vol()-B.Vol()) < MALO)
  55.             ?   1
  56.             :   0;
  57. }
  58. bool operator !=(tetraedr A, tetraedr B) {
  59.     return !(A==B);
  60. }
  61. //INCREMENT PREFIX
  62. const tetraedr& operator ++(tetraedr& A) {
  63.     A.v1=A.v1+1;
  64.     A.v2=A.v2+1;
  65.     A.v3=A.v3+1;
  66.     A.v4=A.v4+1;
  67. return A;
  68. }
  69. //INCREMENT POSTFIX
  70. const tetraedr operator ++(tetraedr& A, int) {
  71.     tetraedr Old(A);
  72.     ++A;
  73.     return Old;
  74.  
  75. }
  76.  
  77. vector& tetraedr::operator[](int a) {
  78.     switch(a) {
  79.     case 0: return v1;
  80.     case 1: return v2;
  81.     case 2: return v3;
  82.     case 3: return v4;
  83.     };
  84.     return v4;
  85. }
  86.  
  87.  
  88. void print(tetraedr A, const char a[255]) {
  89.     printf("\nTetraedr: %s\n",a);
  90.     print(A[0]);
  91.     print(A[1]);
  92.     print(A[2]);
  93.     print(A[3]);
  94. }
  95.  
  96. tetraedr::tetraedr(void) {
  97.     v1[0]=0;    v1[1]=0;    v1[2]=0;
  98.     v2[0]=1;    v2[1]=0;    v2[2]=0;
  99.     v3[0]=0;    v3[1]=1;    v3[2]=0;
  100.     v4[0]=0;    v4[1]=0;    v4[2]=1;
  101. }
  102.  
  103. tetraedr::tetraedr(const tetraedr& z) {
  104.     v1=z.v1;
  105.     v2=z.v2;
  106.     v3=z.v3;
  107.     v4=z.v4;
  108. }
  109.  
  110. tetraedr::tetraedr(vector a,vector b, vector c, vector d) {
  111.     v1=a;
  112.     v2=b;
  113.     v3=c;
  114.     v4=d;
  115. }
  116.  
  117. double tetraedr::Sbok(void) {
  118.     return 0.5*v_prod3(v2-v1,v3-v1).abs()+0.5*v_prod3(v2-v1,v4-v1).abs()+0.5*v_prod3(v3-v1,v4-v1).abs()+0.5*v_prod3(v3-v2,v4-v2).abs();
  119. }
  120.  
  121. double tetraedr::Vol(void) {
  122. return 1.0/6*fabs(det3(v2-v1,v3-v1,v4-v1));
  123. }
  124.  
  125. tetraedr operator+(tetraedr A, tetraedr B) {
  126.     tetraedr C;
  127.     C[0]=A[0]+B[0];
  128.     C[1]=A[1]+B[1];
  129.     C[2]=A[2]+B[2];
  130.     C[3]=A[3]+B[3];
  131.     return C;
  132. }
  133.  
  134. tetraedr operator *(double k,tetraedr A) {
  135.     tetraedr temp;
  136.     temp[0]=A[0]*k;
  137.     temp[1]=A[1]*k;
  138.     temp[2]=A[2]*k;
  139.     temp[3]=A[3]*k;
  140.     return temp;
  141. }
Advertisement
Add Comment
Please, Sign In to add comment