Facebook
From Trivial Partdridge, 5 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 208
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct vec3{
  6.     float x;
  7.     float y;
  8.     float z;
  9. };
  10.  
  11.  
  12. vec3 operator+(const vec3 &a, const vec3 &b)
  13. {
  14.     vec3 c;
  15.     c.x=a.x+b.x;
  16.     c.y=a.y+b.y;
  17.     c.z=a.z+b.z;
  18.     return c;
  19. }
  20.  
  21. vec3 operator-(const vec3 &a, const vec3 &b)
  22. {
  23.     vec3 c;
  24.     c.x=a.x-b.x;
  25.     c.y=a.y-b.y;
  26.     c.z=a.z-b.z;
  27.     return c;
  28. }
  29.  
  30. vec3 operator-(const vec3 &a)
  31. {
  32.     vec3 c;
  33.     c.x=-a.x;
  34.     c.y=-a.y;
  35.     c.z=-a.z;
  36.     return c;
  37. }
  38.  
  39. vec3 &operator+=(vec3 &a, const vec3 &b)
  40. {
  41.     a.x+=b.x;
  42.     a.y+=b.y;
  43.     a.z+=b.z;
  44.     return a;
  45. }
  46.  
  47.  
  48. vec3 &operator-=(vec3 &a, const vec3 &b)
  49. {
  50.     a.x-=b.x;
  51.     a.y-=b.y;
  52.     a.z-=b.z;
  53.     return a;
  54. }
  55. vec3 operator*(const vec3 &a, const vec3 &b)
  56. {
  57.     return vec3{a.y*b.z-a.z*b.y, a.z*b.x-a.x*b.z, a.x*b.y-a.y*b.x};
  58. }
  59.  
  60. vec3 operator*(const vec3 &a, const float &b)
  61. {
  62.     return vec3{a.x*b, a.y*b, a.z*b};
  63. }
  64.  
  65. vec3 &operator*=(vec3 &a, const vec3 &b)
  66. {
  67.     a.x=a.y*b.z-a.z*b.y;
  68.     a.y=a.z*b.x-a.x*b.z;
  69.     a.z=a.x*b.y-a.y*b.x;
  70.        return a;
  71. }
  72.  
  73. vec3 &operator*=( vec3 &a, const float &b)
  74. {
  75.     a.x*=b;
  76.     a.y*=b;
  77.     a.z*=b;
  78.     return a;
  79. }
  80.  
  81. int main(){
  82.     vec3 v1 = {1,2,3};
  83.     v1 = v1 * 100;
  84.     cout<<v1.x << " " << v1.y << " " <<v1.z <<endl;
  85.     return 0;
  86. }
  87.