碎碎念——有趣的数学

  最近几天为了准备秋招笔试,刷了很多题,因此我决定把一些遇到的数学题,和图形学中用到的一些数学内容记录到这里,便于查找,也便于理解。

相邻三个整数之间的关系

假设三个整数分别表示为 n − 1 , n , n + 1 n-1,n,n+1 n1,n,n+1,则有关系:
( n − 1 ) ∗ ( n + 1 ) = n 2 − 1 (n-1)*(n+1)=n^2-1 (n1)(n+1)=n21比如数字7,8,9,则有关系 8 ∗ 8 − 1 = 63 = 79 8*8-1=63=79 881=63=79

**注意:**此处的整数可以是任意正负整数。

证明如下
n 2 = ( ( n − 1 ) + 1 ) ∗ ( ( n + 1 ) − 1 ) n^2 = \bigl((n-1)+1\bigl)*\bigl((n+1)-1\bigl) n2=((n1)+1)((n+1)1) = ( n − 1 ) ∗ ( n + 1 ) + ( n + 1 ) − ( n − 1 ) − 1 = ( n − 1 ) ∗ ( n + 1 ) + 1 =(n-1)*(n+1)+(n+1)-(n-1)-1=(n-1)*(n+1)+1 =(n1)(n+1)+(n+1)(n1)1=(n1)(n+1)+1**证毕。

空间内某一点到某一简单几何体表面的距离

这一部分都使用HLSL语法来表示,因为HLSL语法简单容易理解;
这一部分常用于ray matching算法中,用来计算distance field;
若点在几何体内部,则点到几何体表面的距离我们也进行了计算;

  1. 点p到球面的距离

    float3 p = {x,y,z};			//点p
    float4 s = {centerX,centerY,centerZ,redius};	//球体
    float dist = abs(distance(p, s.xyz) - s.w);			//点P到球面的距离
    

    证明就省去了吧,毕竟挺简单的==,就是计算点到球心的距离,再减去球体的半径求绝对值得到的。

  2. 点p到长方体的距离

    float3 p = {x,y,z};			//点p
    float3 rectCen = {centerX,centerY,centerZ};		//长方体中心
    float3 rectLen = {a,b,c};			//长方体半边长
    float3 tmp = abs(p - rectCen) - rectLen;	//辅助数据
    float dist = length(max(tmp, float3(0)) + max(min(-tmp.x,min(-tmp.y, -tmp.z)), 0);
    

    length(max(tmp, float3(0))表示点p位于长方体外时p到长方体的距离(若p在内部则为0),max(min(-tmp.x,min(-tmp.y, -tmp.z)), 0)表示点p位于长方体内时p到长方体的距离(若p在外部则为0);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值