1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

fix sinusoidal

This commit is contained in:
bolero-MURAKAMI 2012-05-01 11:32:48 +09:00
parent bafd1004dd
commit 51a7a4c86c
4 changed files with 55 additions and 17 deletions

View file

@ -39,13 +39,23 @@ namespace sprout {
explicit SPROUT_CONSTEXPR sinusoidal_range(
range_type& range,
value_type const& frequency = 1,
value_type const& amplitude = 1
value_type const& amplitude = 1,
value_type const& phase = 0
)
: base_type(
iterator(0, frequency, amplitude),
iterator(sprout::size(range), frequency, amplitude)
iterator(0, frequency, amplitude, phase),
iterator(sprout::size(range), frequency, amplitude, phase)
)
{}
SPROUT_CONSTEXPR value_type const& frequency() const {
return base_type::begin().frequency();
}
SPROUT_CONSTEXPR value_type const& amplitude() const {
return base_type::begin().amplitude();
}
SPROUT_CONSTEXPR value_type const& phase() const {
return base_type::begin().phase();
}
};
template<typename Value>
@ -66,13 +76,23 @@ namespace sprout {
sinusoidal_range(sinusoidal_range const&) = default;
explicit SPROUT_CONSTEXPR sinusoidal_range(
value_type const& frequency = 1,
value_type const& amplitude = 1
value_type const& amplitude = 1,
value_type const& phase = 0
)
: base_type(
iterator(0, frequency, amplitude),
iterator(-1, frequency, amplitude)
iterator(0, frequency, amplitude, phase),
iterator(-1, frequency, amplitude, phase)
)
{}
SPROUT_CONSTEXPR value_type const& frequency() const {
return base_type::begin().frequency();
}
SPROUT_CONSTEXPR value_type const& amplitude() const {
return base_type::begin().amplitude();
}
SPROUT_CONSTEXPR value_type const& phase() const {
return base_type::begin().phase();
}
};
//
@ -84,10 +104,11 @@ namespace sprout {
SPROUT_CONSTEXPR sprout::adaptors::sinusoidal_range<Value>
operator()(
Value const& frequency = 1,
Value const& amplitude = 1
Value const& amplitude = 1,
Value const& phase = 0
)
{
return sprout::adaptors::sinusoidal_range<Value>(frequency, amplitude);
return sprout::adaptors::sinusoidal_range<Value>(frequency, amplitude, phase);
}
};
@ -113,7 +134,8 @@ namespace sprout {
>(
sprout::lvalue_forward<Range>(lhs),
rhs.frequency(),
rhs.amplitude()
rhs.amplitude(),
rhs.phase()
);
}
} // namespace adaptors