#include <Vec3d.h>
Public Member Functions | |
vec3d (double xx, double yy, double zz) | |
vec3d (const vec3d &a) | |
vec3d (const threed_point_type &a) | |
vec3d (const double a[3]) | |
vec3d (const float a[3]) | |
vec3d (const std::vector< double > &a) | |
vec3d & | operator= (const vec3d &a) |
vec3d & | operator= (const vec2d &a) |
vec3d & | operator= (double a) |
vec3d & | operator= (const threed_point_type &a) |
double & | operator[] (int i) |
const double & | operator[] (int i) const |
vec2d | as_vec2d_xy () |
vec3d & | set_xyz (double xx, double yy, double zz) |
vec3d & | set_vec (const std::vector< double > &a) |
vec3d & | set_arr (const double a[]) |
vec3d & | set_arr (const float a[]) |
vec3d & | set_x (double xx) |
vec3d & | set_y (double yy) |
vec3d & | set_z (double zz) |
vec3d & | set_refx (const vec3d &a) |
vec3d & | set_refy (const vec3d &a) |
vec3d & | set_refz (const vec3d &a) |
void | get_pnt (double pnt[3]) const |
void | get_pnt (float pnt[3]) const |
void | get_pnt (threed_point_type &pnt) const |
double | x () const |
double | y () const |
double | z () const |
double * | data () |
void | rotate_x (double cos_alpha, double sin_alpha) |
void | rotate_y (double cos_alpha, double sin_alpha) |
void | rotate_z (double cos_alpha, double sin_alpha) |
void | scale_x (double scale) |
void | scale_y (double scale) |
void | scale_z (double scale) |
void | offset_x (double offset) |
void | offset_y (double offset) |
void | offset_z (double offset) |
void | offset_i (double offset, int idir) |
void | rotate_z_zero_x (double cos_alpha, double sin_alpha) |
void | rotate_z_zero_y (double cos_alpha, double sin_alpha) |
vec3d | reflect_xy () const |
vec3d | reflect_xz () const |
vec3d | reflect_yz () const |
vec3d | swap_xy () const |
vec3d | swap_xz () const |
vec3d | swap_yz () const |
vec3d & | operator+= (const vec3d &b) |
vec3d & | operator-= (const vec3d &b) |
vec3d & | operator*= (double b) |
vec3d & | operator+= (double b[]) |
vec3d & | operator-= (double b[]) |
vec3d & | operator+= (float b[]) |
vec3d & | operator-= (float b[]) |
double | mag () const |
void | normalize () |
int | major_comp () const |
int | minor_comp () const |
bool | isnan () const |
bool | isinf () const |
bool | isfinite () const |
Public Attributes | |
double | v [3] |
Friends | |
vec3d | operator+ (const vec3d &a, const vec3d &b) |
vec3d | operator- (const vec3d &a, const vec3d &b) |
vec3d | operator* (const vec3d &a, double b) |
vec3d | operator* (double b, const vec3d &a) |
vec3d | operator* (const vec3d &a, const vec3d &b) |
vec3d | operator/ (const vec3d &a, double b) |
vec3d | operator- (const vec3d &in) |
bool | operator== (const vec3d &a, const vec3d &b) |
bool | operator!= (const vec3d &a, const vec3d &b) |
double | dist (const vec3d &a, const vec3d &b) |
double | dist_squared (const vec3d &a, const vec3d &b) |
double | dot (const vec3d &a, const vec3d &b) |
vec3d | cross (const vec3d &a, const vec3d &b) |
double | angle (const vec3d &a, const vec3d &b) |
double | signed_angle (const vec3d &a, const vec3d &b, const vec3d &ref) |
double | cos_angle (const vec3d &a, const vec3d &b) |
double | radius_of_circle (const vec3d &p1, const vec3d &p2, const vec3d &p3) |
void | center_of_circle (const vec3d &p1, const vec3d &p2, const vec3d &p3, vec3d ¢er) |
double | dist_pnt_2_plane (const vec3d &org, const vec3d &norm, const vec3d &pnt) |
double | dist_pnt_2_line (const vec3d &line_pt1, const vec3d &line_pt2, const vec3d &pnt) |
vec3d | proj_pnt_on_line_seg (const vec3d &line_pt1, const vec3d &line_pt2, const vec3d &pnt) |
vec3d | proj_pnt_on_ray (const vec3d &line_pt1, const vec3d &line_pt2, const vec3d &pnt) |
vec3d | proj_pnt_on_line (const vec3d &line_pt1, const vec3d &line_pt2, const vec3d &pnt) |
vec3d | proj_pnt_to_plane (const vec3d &org, const vec3d &plane_ln1, const vec3d &plane_ln2, const vec3d &pnt) |
vec3d | proj_vec_to_plane (const vec3d &vec, const vec3d &norm) |
int | tri_seg_intersect (const vec3d &A, const vec3d &B, const vec3d &C, const vec3d &D, const vec3d &E, double &u, double &w, double &t) |
int | tri_ray_intersect (const vec3d &A, const vec3d &B, const vec3d &C, const vec3d &D, const vec3d &E, double &u, double &w, double &t) |
int | plane_ray_intersect (const vec3d &A, const vec3d &B, const vec3d &C, const vec3d &D, const vec3d &E, double &t) |
int | plane_ray_intersect (const vec3d &orig, const vec3d &norm, const vec3d &D, const vec3d &E, double &t) |
int | ray_ray_intersect (const vec3d &A, const vec3d &B, const vec3d &C, const vec3d &D, vec3d &int_pnt1, vec3d &int_pnt2) |
double | tetra_volume (const vec3d &A, const vec3d &B, const vec3d &C) |
double | area (const vec3d &A, const vec3d &B, const vec3d &C) |
double | poly_area (const std::vector< vec3d > &pnt_vec) |
double | dist3D_Segment_to_Segment (const vec3d &S1P0, const vec3d &S1P1, const vec3d &S2P0, const vec3d &S2P1) |
double | dist3D_Segment_to_Segment (const vec3d &S1P0, const vec3d &S1P1, const vec3d &S2P0, const vec3d &S2P1, double *Lt, vec3d *Ln, double *St, vec3d *Sn) |
double | nearSegSeg (const vec3d &L0, const vec3d &L1, const vec3d &S0, const vec3d &S1, double *Lt, vec3d *Ln, double *St, vec3d *Sn) |
double | pointLineDistSquared (const vec3d &p, const vec3d &lp0, const vec3d &lp1, double *t) |
double | pointSegDistSquared (const vec3d &p, const vec3d &sp0, const vec3d &sp1, double *t) |
vec3d | point_on_line (const vec3d &lp0, const vec3d &lp1, const double &t) |
vec2d | MapToPlane (const vec3d &p, const vec3d &planeOrig, const vec3d &planeVec1, const vec3d &planeVec2) |
vec3d | MapFromPlane (const vec2d &uw, const vec3d &planeOrig, const vec3d &planeVec1, const vec3d &planeVec2) |
int | plane_half_space (const vec3d &planeOrig, const vec3d &planeNorm, const vec3d &pnt) |
bool | line_line_intersect (const vec3d &p1, const vec3d &p2, const vec3d &p3, const vec3d &p4, double *s, double *t) |
vec3d | RotateArbAxis (const vec3d &p, double theta, const vec3d &r) |
bool | PtInTri (const vec3d &v0, const vec3d &v1, const vec3d &v2, const vec3d &p) |
vec3d | BarycentricWeights (const vec3d &v0, const vec3d &v1, const vec3d &v2, const vec3d &p) |
void | BilinearWeights (const vec3d &p0, const vec3d &p1, const vec3d &p, std::vector< double > &weights) |
double | tri_tri_min_dist (const vec3d &v0, const vec3d &v1, const vec3d &v2, const vec3d &v3, const vec3d &v4, const vec3d &v5) |
double | pnt_tri_min_dist (const vec3d &v0, const vec3d &v1, const vec3d &v2, const vec3d &pnt) |
vec3d | slerp (const vec3d &a, const vec3d &b, const double &t) |
vec3d is typically used to describe coordinate points and vectors in 3D space. All 3 elements in the vector are of type double.
double vec3d::mag | ( | ) | const |
Get the magnitude of a vec3d
void vec3d::normalize | ( | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Rotate the vec3d about the X axis.
\begin{equation}x = cos \textunderscore alpha * x + sin \textunderscore alpha * z\end{equation}
\begin{equation}y = -sin \textunderscore alpha * old_y + cos \textunderscore alpha * z\end{equation}
[in] | cos_alpha | Cosine of rotation angle |
[in] | sin_alpha | Sine of rotation angle |
|
inline |
Rotate the vec3d about the Y axis.
\begin{equation}x = cos \textunderscore alpha * x - sin \textunderscore alpha * z\end{equation}
\begin{equation}z = sin \textunderscore alpha * old_x + cos \textunderscore alpha * z\end{equation}
[in] | cos_alpha | Cosine of rotation angle |
[in] | sin_alpha | Sine of rotation angle |
|
inline |
Rotate the vec3d about the Z axis.
\begin{equation}x = cos \textunderscore alpha * x + sin \textunderscore alpha * y\end{equation}
\begin{equation}y = -sin \textunderscore alpha * old_x + cos \textunderscore alpha * y\end{equation}
[in] | cos_alpha | Cosine of rotation angle |
[in] | sin_alpha | Sine of rotation angle |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
vec3d & vec3d::set_x | ( | double | xx | ) |
vec3d & vec3d::set_xyz | ( | double | xx, |
double | yy, | ||
double | zz ) |
vec3d & vec3d::set_y | ( | double | yy | ) |
vec3d & vec3d::set_z | ( | double | zz | ) |
|
inline |
|
inline |
|
inline |
Calculate the angle between two vec3d inputs (dot product divided by their magnitudes multiplied)
Calculate the cosine of angle between two vec3d inputs
Calculate the distance between two vec3d inputs
Calculate distance squared between two vec3d inputs
Calculate the dot product between two vec3d inputs
Addition operator for two vec3d objects, performed by the addition of each corresponding component
Subtraction operator for two vec3d objects, performed by the subtraction of each corresponding component
Rotate a input point by specified angle around an arbitrary axis. Assume right hand coordinate system
[in] | p | Coordinate point to rotate |
[in] | theta | Angle of rotation in Radians |
[in] | axis | Reference axis for rotation |
Calculate the signed angle between two vec3d inputs (dot product divided by their magnitudes multiplied) and an input reference axis