n/basis: add constant basis for testing

This commit is contained in:
Danny Robson 2015-05-29 15:50:45 +10:00
parent 3a4fed804a
commit 882fd9c87a
4 changed files with 104 additions and 0 deletions

View File

@ -135,6 +135,9 @@ UTIL_FILES = \
net/types.hpp \
nocopy.hpp \
noise/basis.hpp \
noise/basis/constant.cpp \
noise/basis/constant.hpp \
noise/basis/constant.ipp \
noise/basis/value.cpp \
noise/basis/value.hpp \
noise/basis/perlin.cpp \

32
noise/basis/constant.cpp Normal file
View File

@ -0,0 +1,32 @@
/*
* 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 2012-2015 Danny Robson <danny@nerdcruft.net>
*/
#include "constant.hpp"
using util::noise::basis::constant;
//-----------------------------------------------------------------------------
template <typename T>
constant<T>::constant (seed_t _seed):
seed (_seed),
value (42)
{ ; }
///////////////////////////////////////////////////////////////////////////////
template struct util::noise::basis::constant<float>;
template struct util::noise::basis::constant<double>;

40
noise/basis/constant.hpp Normal file
View File

@ -0,0 +1,40 @@
/*
* 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 2012-2015 Danny Robson <danny@nerdcruft.net>
*/
#ifndef __UTIL_NOISE_BASIS_CONSTANT_HPP
#define __UTIL_NOISE_BASIS_CONSTANT_HPP
#include "../../point.hpp"
#include <cstdint>
namespace util { namespace noise { namespace basis {
template <typename T>
struct constant {
using seed_t = uint64_t;
constant (seed_t);
constexpr T operator() (util::point<2,T>) const;
seed_t seed;
T value;
};
} } }
#include "constant.ipp"
#endif

29
noise/basis/constant.ipp Normal file
View File

@ -0,0 +1,29 @@
/*
* 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 2012-2015 Danny Robson <danny@nerdcruft.net>
*/
#ifdef __UTIL_NOISE_BASIS_CONSTANT_IPP
#error
#endif
#define __UTIL_NOISE_BASIS_CONSTANT_IPP
namespace util { namespace noise { namespace basis {
template <typename T>
constexpr T
constant<T>::operator() (util::point<2,T>) const
{
return value;
}
} } }