两个区间映射关系详解/c++
1、首先给一个两个区间映射的公式:
2、最近做项目中频繁用到区间转换,在网上找了许多例子都只有公式介绍,没有直接可用的代码,所以自己写一个给大家参考
3、直接给实现代码:
struct Interval
{
Interval(): min(0.0), max(1.0){}
Interval(const double &_min, const double &_max)
: min(_min), max(_max){}
double min;
double max;
};
class CIntervalMap
{
#define EPSILON 0.000001
public:
CIntervalMap(const double &min = 0.0, const double &max = 1.0)
{
m_dstInterval.min = min;
m_dstInterval.max = max;
}
void setSrcInterval(const double &min = 0.0, const double &max = 1.0)
{
m_srcInterval.min = min;
m_srcInterval.max = max;
}
void setDstInterval(const double &min = 0.0, const double &max = 1.0)
{
m_dstInterval.min = min;
m_dstInterval.max = max;
}
void getIntervalMapValue(const double& dstValue, double &srcValue)
{
double den = (m_dstInterval.max - m_dstInterval.min);
double d = den > EPSILON ? (m_srcInterval.max - m_srcInterval.min) / den : 1.0;
srcValue = (dstValue - m_dstInterval.min) * d + m_srcInterval.min;
}
private:
Interval m_srcInterval;
Interval m_dstInterval;
};
int main()
{
//将区间[1~30]数据映射到区间[300~500]数据中
Interval dst(1, 30);
Interval src(300, 500);
CIntervalMap inter(dst.min, dst.max);
inter.setSrcInterval(src.min, src.max);
for (int i = dst.min; i <= dst.max; ++i)
{
double srcValue = 0.;
inter.getIntervalMapValue(i, srcValue);
std::cout<<"dstValue:"<<i<<" srcValue:"<<srcValue<<std::endl;
}
return 0;
}
两个区间映射关系详解/c++相关推荐
- EntityFramework Core映射关系详解
前言 Hello,开始回归开始每周更新一到两篇博客,本节我们回归下EF Core基础,来讲述EF Core中到底是如何映射的,废话少说,我们开始. One-Many Relationship(一对多关 ...
- 人工智能数学基础:两个存在映射关系的随机变量的概率密度函数关系研究
一.引言 在<数字图像处理>(<<数字图像处理>第三章学习总结感悟2-1:直方图均衡(Histogram Equalization)>)中有这样一段描述: 由基本概 ...
- [MyBatis]-resultMap结果映射集详解
resultMap结果映射集详解 resultmap是mybatis中最复杂的元素之一,它描述如何从结果集中加载对象,主要作用是定义映射规则.级联的更新.定制类型转化器. resultmap构成元素 ...
- Hibernate配置文件与映射文件详解
Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...
- Mybatis复习笔记3:映射文件详解
映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...
- UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- 好程序员前端教程之JavaScript闭包和匿名函数的关系详解...
好程序员前端教程之JavaScript闭包和匿名函数的关系详解 本文讲的是关于JavaScript闭包和匿名函数两者之间的关系,从匿名函数概念到立即执行函数,最后到闭包.下面一起来看看文章分析,希望你 ...
- 文件的复制、移动、压缩等对SELinux属性关系详解
文件的复制.移动.压缩等对SELinux属性关系详解 1.临时修改文件的类型属性 文件的类型属性不正确是常见的SELinux拒绝访问的主要原因 1)修改文件的SELinux属性: [root@loca ...
- Java中常见RuntimeException与其他异常表及Exception逻辑关系详解
Java中常见RuntimeException与其他异常表及Exception逻辑关系详解 前言 常见`RuntimeException` 其他错误类型 `Error`类 `Exception`类 E ...
最新文章
- Ubuntu系统---安NVIDIA 驱动后 CUDA+cuDNN 安装
- linux 时钟同步 chrony 简介
- 手机版网页开发_华为低调发布鸿蒙OS手机开发者Beta版,明年覆盖1亿台设备
- R语言观察日志(part12)--关于.Rprofile文件
- 0 重新学习Ubuntu -- 这一段没怎么学习
- linux如何全局搜索目录,Linux 全目录全文搜索
- Java学习笔记1.1.2 搭建Java开发环境 - 安装配置JDK
- 翁恺老师C语言学习笔记(十)指针_指针与数组
- From Apprentice To Artisan 翻译 17
- rad linux下安装mysql_Rad Hat Enterprise Linux 5.5上安装Oracle 11g R2
- 游戏玩家的图形显示设置指南(11)(The Gamer's Graphics Display Settings Guide)
- Go语言:交换两个整型变量的值
- Java 小记 — RabbitMQ 的实践与思考
- UE4简单水体使用记录
- 百度网盘破解版下不了大文件
- 【NLP】哈工大车万翔教授 -- 自然语言处理NLPer的核心竞争力是什么?19页ppt
- 如何使用Clonezilla克隆Windows硬盘
- python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0
- [Unity]Optimize Your Mobile Game Performance中文版
- 在vc中使用xtremetoolkit界面库-----安装及环境配置