First failed step.

This commit is contained in:
Bill Thiede 2019-10-03 20:53:14 -07:00
parent 833c0a56eb
commit 5111cb9863
4 changed files with 55 additions and 1 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
**/*.rs.bk

6
Cargo.lock generated Normal file
View File

@ -0,0 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "linearscale"
version = "0.1.0"

9
Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "linearscale"
version = "0.1.0"
authors = ["Bill Thiede <git@xinu.tv>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

View File

@ -1,4 +1,41 @@
pub struct LinearScale {}
/// You configure it with an input range and an output range
/// then you pass it values within the input range and it returns where that value falls in the
/// output range
/// The trick is that input and output can be either integers or floats
/// and if it's all integers no floating point math is used. If either is a float then floating
/// point math is used
use std::ops::Add;
use std::ops::Div;
use std::ops::Mul;
use std::ops::RangeInclusive;
use std::ops::Sub;
pub struct LinearScale<InT, OutT>
where
InT: Sub<Output = InT> + Add + Mul + Div + From<OutT>,
OutT: Sub<Output = OutT> + Add + Mul + Div + From<InT>,
{
input: RangeInclusive<InT>,
output: RangeInclusive<OutT>,
}
impl<InT, OutT> LinearScale<InT, OutT>
where
InT: Sub<Output = InT> + Add + Mul + Div + From<OutT>,
OutT: Sub<Output = OutT> + Add + Mul + Div + From<InT>,
{
fn new(input: RangeInclusive<InT>, output: RangeInclusive<OutT>) -> LinearScale<InT, OutT> {
LinearScale { input, output }
}
fn output_for(&self, v: InT) -> OutT {
OutT::from(v)
//let in_alpha = (v - *self.input.start()) / (*self.input.end() - *self.input.start());
// (*self.output.start() + (in_alpha * (*self.output.end() - *self.output.start()))) / (*self.output.end() - *self.output.start())
}
}
fn main() {}
#[cfg(test)]
mod tests {