vector: add homogenous converter
added for symmetry with point classes
This commit is contained in:
parent
6095c755cf
commit
5b8df525a2
@ -246,6 +246,7 @@ UTIL_FILES = \
|
|||||||
variadic.ipp \
|
variadic.ipp \
|
||||||
vector.cpp \
|
vector.cpp \
|
||||||
vector.hpp \
|
vector.hpp \
|
||||||
|
vector.ipp \
|
||||||
version.cpp \
|
version.cpp \
|
||||||
version.hpp \
|
version.hpp \
|
||||||
view.cpp \
|
view.cpp \
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*
|
*
|
||||||
* Copyright 2011 Danny Robson <danny@nerdcruft.net>
|
* Copyright 2011-2015 Danny Robson <danny@nerdcruft.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __UTIL_VECTOR_HPP
|
#ifndef __UTIL_VECTOR_HPP
|
||||||
@ -45,6 +45,9 @@ namespace util {
|
|||||||
vector<S,T>& normalise (void);
|
vector<S,T>& normalise (void);
|
||||||
vector<S,T> normalised [[gnu::warn_unused_result]] (void) const;
|
vector<S,T> normalised [[gnu::warn_unused_result]] (void) const;
|
||||||
|
|
||||||
|
// representations
|
||||||
|
template <size_t D> vector<D,T> homog (void) const;
|
||||||
|
|
||||||
// constants
|
// constants
|
||||||
static const vector<S,T> UNIT;
|
static const vector<S,T> UNIT;
|
||||||
static const vector<S,T> ZERO;
|
static const vector<S,T> ZERO;
|
||||||
@ -83,5 +86,7 @@ namespace util {
|
|||||||
typedef vector<3,double> vector4d;
|
typedef vector<3,double> vector4d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "vector.ipp"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
33
vector.ipp
Normal file
33
vector.ipp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* Copyright 2011-2015 Danny Robson <danny@nerdcruft.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__UTIL_VECTOR_IPP)
|
||||||
|
#error
|
||||||
|
#else
|
||||||
|
#define __UTIL_VECTOR_IPP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
namespace util {
|
||||||
|
template <size_t S, typename T>
|
||||||
|
template <size_t D>
|
||||||
|
vector<D,T>
|
||||||
|
vector<S,T>::homog (void) const
|
||||||
|
{
|
||||||
|
static_assert (D > S, "reducing size loses data");
|
||||||
|
return (*this).template redim<D> (0.f);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user