Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Smoothie by
Vector3.cpp
00001 #include "Vector3.h" 00002 00003 #include <fastmath.h> 00004 #include <cstddef> 00005 00006 float Vector3::nan = NAN; 00007 00008 Vector3::Vector3() 00009 { 00010 elem[0] = elem[1] = elem[2] = 0.0F; 00011 } 00012 00013 Vector3::Vector3(float a, float b, float c) 00014 { 00015 elem[0] = a; 00016 elem[1] = b; 00017 elem[2] = c; 00018 } 00019 00020 float& Vector3::operator[](int i) 00021 { 00022 if (i >= 0 && i <= 2) 00023 return elem[i]; 00024 return nan; 00025 } 00026 00027 Vector3 Vector3::cross(const Vector3 vec) 00028 { 00029 Vector3 out; 00030 00031 out.elem[0] = elem[1] * vec.elem[2] - elem[2] * vec.elem[1]; 00032 out.elem[1] = elem[2] * vec.elem[0] - elem[0] * vec.elem[2]; 00033 out.elem[2] = elem[0] * vec.elem[1] - elem[1] * vec.elem[0]; 00034 00035 return out; 00036 } 00037 00038 float Vector3::dot(const Vector3 vec) 00039 { 00040 return elem[0] * vec.elem[0] + 00041 elem[1] * vec.elem[1] + 00042 elem[2] * vec.elem[2]; 00043 } 00044 00045 float Vector3::magsq() 00046 { 00047 return powf(elem[0], 2) + 00048 powf(elem[1], 2) + 00049 powf(elem[2], 2); 00050 } 00051 00052 float Vector3::mag() 00053 { 00054 return sqrtf(magsq()); 00055 } 00056 00057 Vector3 Vector3::add(const Vector3 vec) 00058 { 00059 Vector3 out; 00060 00061 out.elem[0] = elem[0] + vec.elem[0]; 00062 out.elem[1] = elem[1] + vec.elem[1]; 00063 out.elem[2] = elem[2] + vec.elem[2]; 00064 00065 return out; 00066 } 00067 00068 Vector3 Vector3::sub(const Vector3 vec) 00069 { 00070 Vector3 out; 00071 00072 out.elem[0] = elem[0] - vec.elem[0]; 00073 out.elem[1] = elem[1] - vec.elem[1]; 00074 out.elem[2] = elem[2] - vec.elem[2]; 00075 00076 return out; 00077 } 00078 00079 Vector3 Vector3::mul(float scalar) 00080 { 00081 Vector3 out; 00082 00083 out.elem[0] = elem[0] * scalar; 00084 out.elem[1] = elem[1] * scalar; 00085 out.elem[2] = elem[2] * scalar; 00086 00087 return out; 00088 } 00089 00090 Vector3 Vector3::unit() 00091 { 00092 Vector3 out; 00093 00094 float denom = mag(); 00095 00096 out.elem[0] = elem[0] / denom; 00097 out.elem[1] = elem[1] / denom; 00098 out.elem[2] = elem[2] / denom; 00099 00100 return out; 00101 }
Generated on Tue Jul 12 2022 20:09:03 by
1.7.2
