Make vector constructor explicit
It had been seen to construct out of single doubles, which is problematic...
This commit is contained in:
parent
f40771eb87
commit
bd5b9722ea
16
vector.cpp
16
vector.cpp
@ -269,8 +269,10 @@ util::vector<S>::normalised (void) const {
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
util::vector<2>
|
util::vector<2>
|
||||||
util::polar_to_cartesian (const util::vector<2> &v) {
|
util::polar_to_cartesian (const util::vector<2> &v) {
|
||||||
return { v.r * std::cos (v.t),
|
return util::vector<2> {
|
||||||
v.r * std::sin (v.t) };
|
v.r * std::cos (v.t),
|
||||||
|
v.r * std::sin (v.t)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -286,16 +288,18 @@ util::vector<S>::dot (const util::vector<S> &rhs) const {
|
|||||||
|
|
||||||
util::vector<3>
|
util::vector<3>
|
||||||
util::cross (const util::vector<3> &a, const util::vector<3> &b) {
|
util::cross (const util::vector<3> &a, const util::vector<3> &b) {
|
||||||
return { a.y * b.z - a.z * b.y,
|
return util::vector<3> {
|
||||||
|
a.y * b.z - a.z * b.y,
|
||||||
a.z * b.x - a.x * b.z,
|
a.z * b.x - a.x * b.z,
|
||||||
a.x * b.y - a.y * b.x };
|
a.x * b.y - a.y * b.x
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
util::vector<3>
|
util::vector<3>
|
||||||
util::spherical_to_cartesian (const util::vector<3> &s) {
|
util::spherical_to_cartesian (const util::vector<3> &s) {
|
||||||
return {
|
return util::vector<3> {
|
||||||
s.x * sin (s.y) * cos (s.z),
|
s.x * sin (s.y) * cos (s.z),
|
||||||
s.x * sin (s.y) * sin (s.z),
|
s.x * sin (s.y) * sin (s.z),
|
||||||
s.x * cos (s.y),
|
s.x * cos (s.y),
|
||||||
@ -307,7 +311,7 @@ util::vector<3>
|
|||||||
util::cartesian_to_spherical (const util::vector<3> &c) {
|
util::cartesian_to_spherical (const util::vector<3> &c) {
|
||||||
double mag = c.magnitude ();
|
double mag = c.magnitude ();
|
||||||
|
|
||||||
return {
|
return util::vector<3> {
|
||||||
mag,
|
mag,
|
||||||
acos (c.z / mag),
|
acos (c.z / mag),
|
||||||
atan2 (c.y, c.x)
|
atan2 (c.y, c.x)
|
||||||
|
@ -36,7 +36,7 @@ namespace util {
|
|||||||
vector ();
|
vector ();
|
||||||
|
|
||||||
template <typename... T>
|
template <typename... T>
|
||||||
vector (T ...t): detail::coord_data<S> {std::forward<T> (t)...} { ; }
|
explicit vector (T ...t): detail::coord_data<S> {std::forward<T> (t)...} { ; }
|
||||||
|
|
||||||
util::vector<S> operator* (double) const;
|
util::vector<S> operator* (double) const;
|
||||||
util::vector<S>& operator*=(double);
|
util::vector<S>& operator*=(double);
|
||||||
|
Loading…
Reference in New Issue
Block a user