文章目录

  • cosh
    • 为何叫双曲线
      • exp(x)曲线
      • exp(-x) 曲线
      • exp(x)+exp(-x) 两曲线叠加
      • 调整x=0时,y=0
      • 调整x=-2 or 2时,y=1
  • exp(-x*x)
  • sinh
  • smoothstep
  • tanh
  • perlin noise ease curve 1
  • perlin noise ease curve 2
  • Summary
  • excel 文件
  • References

xxxh
中的h==>hyperbolic:双曲线的意思


cosh

// see: https://developer.download.nvidia.cn/cg/cosh.html
float cosh(float x)
{return 0.5 * (exp(x)+exp(-x));
}

0.5∗(exp(x)+exp(−x))0.5 * (exp(x)+exp(-x))0.5∗(exp(x)+exp(−x))


为何叫双曲线

因为exp(x)就是一个曲线,而cosh中有exp(x)与exp(-x),所以就是两个(双)曲线咯


exp(x)曲线

exp(x)exp(x)exp(x)

exp(-x) 曲线

exp(−x)exp(-x)exp(−x)

exp(x)+exp(-x) 两曲线叠加

exp(x)+exp(−x)exp(x)+exp(-x)exp(x)+exp(−x)

调整x=0时,y=0

exp(x)+exp(−x)−2exp(x)+exp(-x)-2exp(x)+exp(−x)−2

调整x=-2 or 2时,y=1

(exp(x)+exp(−x)−2)∗(1/exp(x)+exp(−x)−2)(exp(x)+exp(-x)-2)*(1/exp(x)+exp(-x)-2)(exp(x)+exp(−x)−2)∗(1/exp(x)+exp(−x)−2)
==>
∵curv=(exp(x)+exp(−x)−2)\because curv=(exp(x)+exp(-x)-2)∵curv=(exp(x)+exp(−x)−2)
∵invCurv=1/curv\because invCurv=1/curv∵invCurv=1/curv
∴1=curv∗invCurv\therefore 1=curv*invCurv∴1=curv∗invCurv


exp(-x*x)

2022/07/14 再补充一条曲线
因为在制作 SSS 时,看到别人的代码中有一曲线

half3 Transmittance(half transmittanceMask, half3 sssColor, half3 lightDir, half3 normal, half3 viewDir)
{half3 lll = normalize(lightDir + normal * 0.1f);half VdotL = saturate(dot(viewDir, -lll));half thickness = 1.0f - (VdotL * transmittanceMask);//return exp((thickness) * half3( -8, -40, -64 ) ); // refreturn exp(-(thickness * thickness)) * sssColor * (1.0 - thickness);
}

其中留意:exp(-(thickness * thickness))

单独查看:exp(-x*x


sinh

float sinh(float x)
{return 0.5 * (exp(x)-exp(-x));
}



smoothstep

smoothstep(min,max,x)

它的公式如下:
smoothstep(x)=−2⋅(x−minmax−min)3+3⋅(x−minmax−min)2smoothstep(x)=-2 \cdot (\frac{x-min}{max-min})^3+3 \cdot (\frac{x-min}{max-min})^2 smoothstep(x)=−2⋅(max−minx−min​)3+3⋅(max−minx−min​)2

代码是在公式的基础上优化了写法的,可读性会差非常的多!

float smoothstep(float a, float b, float x)
{float t = saturate((x - a)/(b - a));return t*t*(3.0 - (2.0*t));
}



tanh

float tanh(float x)
{float exp2x = exp(2*x);return (exp2x - 1) / (exp2x + 1);
}


tanh 的头部过渡速度比较快,中,尾部比较缓慢
一般比较多的动画也会用到类似的曲线


perlin noise ease curve 1

3(t2)−2(t3)3(t^2)−2(t^3)3(t2)−2(t3)可见perlin noise中初版的平滑插值,与smoothstep非常相似

3(t^2)−2(t^3)


perlin noise ease curve 2

6(t5)−15(t4)+10(t3)6(t^5)−15(t^4)+10(t^3)6(t5)−15(t4)+10(t3)

6(t^5)−15(t^4)+10(t^3)


curve 2比curve 1的头尾过渡比较缓慢,也就是说作数值过渡会比较饱满的头尾,中部过渡比较快一些


Summary

其实我们在很多平台的动画库(tween)都会有类似的插值过渡算法


excel 文件

cosh_sinh_smoothstep_tanh_perlinEaseCurve1&2.xlsx 提取码: dxnr


References

  • Cg / Standard Library / cosh
  • Cg / Standard Library / sinh
  • Cg / Standard Library / smoothstep
  • Cg / Standard Library / tanh
  • cg中的关键字、语义词、函数库

CG cosh, exp, sinh, smoothstep, tanh, perlin_easeCurve1/2 曲线相关推荐

  1. oracle cosh 函数,oracle cosh exp floor in log等函数

    21.返回一个数字反余弦值 SQL> select cosh(20) from dual; COSH(20) --- 242582598 22.EXP 返回一个数字e的n次方根 SQL> ...

  2. abap 常用系统变量

    常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUB ...

  3. python基础代码库-Python基础数据处理库-NumPy

    最近更新:2017-07-19 NumPy是Python做数据处理的底层库,是高性能科学计算和数据分析的基础,比如著名的Python机器学习库SKlearn就需要NumPy的支持.掌握NumPy的基础 ...

  4. 【Python】Numpy基础:数组和矢量运算

    Numpy基础:数组和矢量运算 目录: 文章目录 一 Numpy及其重要性 二 ndarray:一种多维数组对象 1 创建ndarray 2 ndarray的数据类型 3 数组和标量之间的运算 4 基 ...

  5. ABAP语言常用的系统字段及函数

    ABAP语言常用的系统字段及函数 常用的系统变量如下: 1.SY-PAGNO当前页号 2.SY-DATUM当前时间 3.SY-LINSZ当前报表宽度 4.SY-LINCT当前报表长度 5.SPACE空 ...

  6. C语言再学习 -- 常用头文件和函数(转)

    参看:C/C++常用头文件及函数汇总 linux常用头文件如下: POSIX标准定义的头文件 <dirent.h>        目录项 <fcntl.h>         文 ...

  7. C/C++头文件一览表

    C/C++常用头文件 以及简单应用介绍 C/C++头文件一览C#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #in ...

  8. python numpy库作用_python Numpy库

    一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型:ndarray,表示n维数组 创建ndarray数组: -由列表或者元组类型创建数组 -有元组类型创建数组 ...

  9. 21天学MySQL_SQL21天自学通.pdf

    SQL21天自学通 SQL 21 日自学通(V1.0) 翻译人 笨猪 目录 目录 1 译者的话 14 第一周概貌 16 从这里开始 16 第一天 SQL 简介 17 SQL 简史 17 数据库简史 1 ...

最新文章

  1. (传送门)ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
  2. 大四Java复习笔记之Java基础
  3. 为什么Go没有三元运算符
  4. 6.openldap客户端安装
  5. 答题闯关php,成语答题闯关红包流量主小程序源码
  6. 《解剖PetShop》系列之一(转)
  7. 小米10pro使用说明书_30W有线无线快充,小米的这款立式无线充电宝表现不错
  8. 从零基础入门Tensorflow2.0 ----八、39.3. gpu3
  9. 190403 联众验证码 - python3接入
  10. Scrapy框架-阳光政务平台爬虫(二)
  11. 《Shopify从入门到精通》笔记(4~6章)
  12. VC 获取任务栏窗口的句柄
  13. 关于星巴克推广活动的实验测试
  14. Data Binding 用户指南(Android)
  15. unity触发时播放音效
  16. PFSO-T5,一种OLED材料
  17. Windows下pytorch-gpu安装以及CUDA详细安装过程 附带各个版本安装包
  18. PAT-A-1062 Talent and Virtue 【排序】
  19. 上海亚商投顾:三大指数均涨超1% 芯片板块集体大涨
  20. XPS可以转成Word吗?两种XPS转Word的方法

热门文章

  1. 电路基础_模拟电路_问答_2023
  2. linux切换用户时报错 bash: /home/book/.bashrc: 权限不够 bash-4.2$
  3. Linux下干净卸载mysql详解
  4. 计算机毕业设计(附源码)python学生社团管理
  5. java类加载机制、类加载器、自定义类加载器
  6. 华为海思 verilog 笔试准备
  7. Web课程设计高校物资管理系统
  8. zabbix连接mysql_zabbix的简单操作(监控客户端MySQL数据包库)
  9. 单位根检验、协整检验和格兰杰因果关系检验三者之间的关系
  10. 怪物猎人ol服务器维护,腾讯宣布怪物猎人OL停运 12月31日正式关服