add x, y, z
This commit is contained in:
parent
595e46f6bf
commit
821dfe3afd
@ -131,5 +131,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
auto [x, y, z] = lerp_1.get_value();
|
auto [x, y, z] = lerp_1.get_value();
|
||||||
hack::log()("get", x, y, z);
|
hack::log()("get", x, y, z);
|
||||||
|
hack::log()("get", lerp_1.x());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
namespace hack
|
namespace hack
|
||||||
{
|
{
|
||||||
@ -26,7 +27,10 @@ namespace hack
|
|||||||
using value_t = decltype(typename generate_tuple<Args...>::type{});
|
using value_t = decltype(typename generate_tuple<Args...>::type{});
|
||||||
|
|
||||||
public:
|
public:
|
||||||
vector(Args... args) : value_ { args... } {}
|
vector(Args... args) : value_ { args... }
|
||||||
|
{
|
||||||
|
if (std::tuple_size<value_t>{} < 2) throw std::out_of_range("You try make no valid vector!");
|
||||||
|
}
|
||||||
vector& operator=(const vector& v)
|
vector& operator=(const vector& v)
|
||||||
{
|
{
|
||||||
if (this == &v) return *this;
|
if (this == &v) return *this;
|
||||||
@ -37,6 +41,28 @@ namespace hack
|
|||||||
public:
|
public:
|
||||||
value_t get_value() { return value_; };
|
value_t get_value() { return value_; };
|
||||||
|
|
||||||
|
auto x()
|
||||||
|
{
|
||||||
|
return std::get<0>(value_);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto y()
|
||||||
|
{
|
||||||
|
return std::get<1>(value_);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto z()
|
||||||
|
{
|
||||||
|
if (std::tuple_size<value_t>{} < 3) throw std::out_of_range("You try get no valid vector date!");
|
||||||
|
return std::get<2>(value_);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto w()
|
||||||
|
{
|
||||||
|
if (std::tuple_size<value_t>{} < 4) throw std::out_of_range("You try get no valid vector date!");
|
||||||
|
return std::get<3>(value_);
|
||||||
|
}
|
||||||
|
|
||||||
auto length()
|
auto length()
|
||||||
{
|
{
|
||||||
return std::sqrt(length_idx(std::make_index_sequence<std::tuple_size<value_t>::value>{}));
|
return std::sqrt(length_idx(std::make_index_sequence<std::tuple_size<value_t>::value>{}));
|
||||||
|
Loading…
Reference in New Issue
Block a user