#include <iostream>
float map(float value, float istart, float istop, float ostart, float ostop)
{
return ostart + (ostop - ostart) * ((value - istart) / (istop - istart));
}
float remap(float v, float a, float b, float c, float d)
{
return v-(abs(b-a)-abs(d-c))/2.0;
}
int main()
{
std::cout << map(5.0, 0.0,10.0, 20.0,40.0) << std::endl;
std::cout << remap(5.0, 0.0,10.0, 20.0,40.0) << std::endl;
std::cout << map(5.0, 0.0,10.0, 0.0,40.0) << std::endl;
std::cout << remap(5.0, 0.0,10.0, 0.0,40.0) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKZmxvYXQgbWFwKGZsb2F0IHZhbHVlLCBmbG9hdCBpc3RhcnQsIGZsb2F0IGlzdG9wLCBmbG9hdCBvc3RhcnQsIGZsb2F0IG9zdG9wKQp7CglyZXR1cm4gb3N0YXJ0ICsgKG9zdG9wIC0gb3N0YXJ0KSAqICgodmFsdWUgLSBpc3RhcnQpIC8gKGlzdG9wIC0gaXN0YXJ0KSk7Cn0KCmZsb2F0IHJlbWFwKGZsb2F0IHYsIGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQpCnsKCXJldHVybiB2LShhYnMoYi1hKS1hYnMoZC1jKSkvMi4wOwp9CgppbnQgbWFpbigpCnsKCXN0ZDo6Y291dCA8PCAgIG1hcCg1LjAsIDAuMCwxMC4wLCAyMC4wLDQwLjApIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCByZW1hcCg1LjAsIDAuMCwxMC4wLCAyMC4wLDQwLjApIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAgIG1hcCg1LjAsIDAuMCwxMC4wLCAgMC4wLDQwLjApIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCByZW1hcCg1LjAsIDAuMCwxMC4wLCAgMC4wLDQwLjApIDw8IHN0ZDo6ZW5kbDsKfQo=