
数学
文章平均质量分 80
tkokof1
这个作者很懒,什么都没留下…
展开
-
Sweet Snippet 之 大整数乘法
本文简单介绍了一种大整数乘法的实现方式当整数范围较大时,直接使用乘法运算符(*)很容易导致数值溢出,如果开发工作中确实需要处理这种大范围的整数,那么我们便需要实现一下大(范围)整数的乘法运算(一般方法便是将大整数表达为字符串,然后基于字符串来进行乘法运算).在实现大整数乘法之前,我们先来实现一下大整数的加法运算,朴素方法便是从低到高按位进行加法操作,并考虑进位的影响,代码大概如下(Lua):local big_int = {}local function digit_num(v) re.原创 2022-01-04 21:23:31 · 355 阅读 · 1 评论 -
Sweet Snippet 之 骑士金币问题
本文简述了骑士金币问题的两种实现方法首先我们来看下什么是 骑士金币问题:骑士金币问题国王要用金币赏赐忠于他的骑士.骑士在就职的第一天得到一枚金币,接下来的两天(第二天和第三天)每天会得到两枚金币,接下来的三天(第四、五、六天)每天会得到三枚金币,接下来的四天(第七、八、九、十天)每天会得到四枚金币,这样的赏赐形式会一直持续下去,问题是给定一个天数(譬如第十天),求骑士将会获得的总的金币数量.举个简单的例子,如果给定第十天(NNN = 10),那么骑士将会获得的总的金币数量(CCC)为:C=1+.原创 2021-10-07 12:50:35 · 924 阅读 · 0 评论 -
Octave 笔记
简单用了一下 Octave,发现用他来进行数据运算、矢量绘制等操作的时候还是非常方便的,在此做一点简单笔记.注释% 或者 # 为单行注释# this is line comment% this is line comment%{ 与 %} 或者 #{ 与 #} 为块(多行)注释%{ block comment%}#{ block comment#}向量在 Octave 中我们可以直接创建向量,使用 空格 或者 逗号 来分隔列;使用 分号来分隔行.>&g.原创 2020-09-02 11:28:27 · 852 阅读 · 0 评论 -
简单聊聊 Perlin 噪声(下篇)
程序开发中总会用到随机方法,一般的随机方法虽然通用,但是产生的随机数又因为过于"随机",不适合用来生成平滑连续的随机数据(譬如自然地形的高度),这个时候我们便需要使用特殊的随机方法了, Perlin 噪声便是一种能够产生平滑(随机)数值的随机方法.Perlin 噪声理解了二维的 Value 噪声,我们就可以进一步来看 二维的 Perlin 噪声了.二维 Perlin 噪声的生成方式和 二维 Value 噪声的生成方式大体相同,二维 Perlin 噪声也是根据给定的坐标选取对应的正方形,并将该正方形.原创 2020-08-31 16:05:43 · 962 阅读 · 0 评论 -
简单聊聊 Perlin 噪声(上篇)
程序开发中总会用到随机方法,一般的随机方法虽然通用,但是产生的随机数又因为过于"随机",不适合用来生成平滑连续的随机数据(譬如自然地形的高度),这个时候我们便需要使用特殊的随机方法了, Perlin 噪声便是一种能够产生平滑(随机)数值的随机方法.Value 噪声为了更容易的理解 Perlin 噪声,我们先从较简单的 Value 噪声看起:首先我们考虑 一维 情况(即通过一维坐标来获取随机值),如果我们仅使用一般随机方法的话,得到的随机数值是这样的:可以看到数据杂乱无章,远不能说是平滑连续,有.原创 2020-08-27 10:38:05 · 1886 阅读 · 0 评论 -
Sweet Snippet 之 方差计算
方差计算的简单实现在概率统计中,方差用于衡量一组数据的离散程度,相关的计算公式如下(总体方差):μ=1N∑i=1Nxiσ2=1N∑i=1N(xi−μ)2 \begin{aligned} &\mu = \frac{1}{N}\sum_{i = 1}^{N}x_i \\ &\sigma^2 = \frac{1}{N}\sum_{i = 1}^{N}(x_...原创 2020-02-16 16:43:18 · 778 阅读 · 0 评论 -
数学小记之常用数值
本文简单列举了一些常用数值,熟记这些数值可以方便我们进行数学运算π\piπ 相关的数值想必大部分朋友都比较熟悉了:π≈3.14π2≈1.572π≈6.28 \begin{aligned} & \pi \approx 3.14 \\ & \frac{\pi}{2} \approx 1.57 \\ & 2\pi...原创 2019-09-11 12:43:57 · 4099 阅读 · 1 评论 -
Sweet Snippet 之 Gram-Schmidt 正交化
Gram-Schmidt 正交化的简单实现Gram-Schmidt(格拉姆-施密特) 正交化可以正交化一组给定的向量,使这些向量两两垂直,这里列出一份简单的实现(Lua):-- vector addfunction add(a, b) if a and b and #a == #b then local ret = {} for ...原创 2019-08-14 15:40:09 · 491 阅读 · 0 评论 -
Sweet Snippet 之矩阵求逆
矩阵求逆的简单实现矩阵求逆有很多种方法,使用伴随矩阵可能是相对易于编码的方式,在此简单列一下实现(Lua):-- matrix store is table in row order-- e.g. 2 x 2 matrix is stored as table { m11, m12, m21, m22 }-- determinant 2 with scalar elementsfu...原创 2019-08-06 21:15:55 · 476 阅读 · 0 评论 -
关于满二叉树的一个证明
本文简单给出了在满二叉树中 内部节点数目(CiC_iCi) = 叶子节点数目(ClC_lCl) - 1 的两种证明方法二叉树大家都不陌生,但是分类上可能大家就不那么熟稔了,本篇博文中提到的所谓满二叉树,定义上也有些分歧,在此我们采用如下定义:满二叉树(Full Binary Tree),即只存在 度为 0 的节点(叶子节点) 和 度为 2 的节点(内部节点) 的二叉树(定义中提到的...原创 2019-08-07 23:05:35 · 1318 阅读 · 2 评论 -
Sweet Snippet 系列之 扩展欧几里得算法
扩展欧几里得算法的简单实现扩展欧几里得算法是欧几里得算法(辗转相除法)的扩展,欧几里得算法可以用于求解两个自然数(记为 aaa 和 bbb)的最大公约数,而扩展欧几里得算法不仅可以求出 aaa 和 bbb 的最大公约数,还能同时计算出两个整数 xxx 和 yyy, 使它们满足等式(等式中的 gcd(a,b)gcd(a, b)gcd(a,b) 即表示 aaa 和 bbb 的最大公约数):ax...原创 2019-07-06 11:30:21 · 263 阅读 · 0 评论 -
Sweet Snippet 系列之 埃拉托斯特尼(Eratosthenes)筛法
埃拉托斯特尼(Eratosthenes)筛法的简单实现遴选素数的埃拉托斯特尼(Eratosthenes)筛法想必大家都不陌生,不熟悉的朋友可以看看wiki,在此简单列出一份代码实现(Lua)function Eratosthenes(n) local is_prime = {} -- init is_prime map for i = 2, n do ...原创 2019-07-04 21:32:51 · 340 阅读 · 0 评论 -
数学小记之卷积
本文简述了1维卷积和2维卷积的实现一维卷积描述卷积的方式很多,譬如这个:一个函数在另一个函数上的加权叠加虽然各个解释都有助于我们对卷积的理解,但是个人感觉还是直接通过公式来了解卷积更为直观(简单起见,这里我们仅讨论卷积的离散定义):f(x)∗g(x)=∑n=−∞∞f(n)g(x−n)f(x)*g(x) = \sum_{n=-\infty}^{\infty}f(n)g(x - n...原创 2018-12-01 10:11:00 · 660 阅读 · 0 评论 -
简单理解伽马校正
伽马校正相关的资料说明很多,但其中不少内容都写的比较繁杂,令人难以理解, 本文尝试简单解释一下伽马校正的相关内容~早期的 CRT 显示器存在非线性输出的问题,简单来说,你给 CRT 显示器输入(input)一个 0.5(**注意,输入范围为[0,1]), CRT 显示器的输出(output)并不是 0.5,而是约等于 0.218,输入与输出间存在一个指数大概为 2.2 的幂次关系:outp...原创 2019-02-22 14:50:54 · 6660 阅读 · 4 评论 -
法向量变换矩阵的推导
本文简述了一种法向量变换矩阵的推导过程使用矩阵对点进行空间变换是图形学中的常见操作,假设变换矩阵为 MMM ,我们需要变换切向量 TTT(由 点 P2P_2P2 - 点 P1P_1P1 定义) 以及与其垂直的法向量 NNN .(TTT 和 NNN 皆为列向量)假设 点 P2P_2P2 经过 MMM 变换后为 P2′P_2'P2′, 点 P1P_1P1 经过 MM...原创 2019-03-13 14:34:59 · 2969 阅读 · 0 评论 -
小议斜透视投影矩阵(oblique projection matrix)
本文简介了斜透视投影矩阵(oblique projection matrix)相关的一些知识Unity 的这篇文档提及了斜透视投影的一些内容,还列出了示例代码:using UnityEngine;using System.Collections;public class ExampleScript : MonoBehaviour { void SetObliqueness(f...原创 2019-04-07 20:59:19 · 2334 阅读 · 1 评论 -
[译]OpenGL投影矩阵
这是关于OpenGL投影矩阵的一篇译文,原文在这里.概览(Overview)电脑显示屏是一个2D平面,为了能够在这个2D平面上显示OpenGL渲染的3D场景,我们必须将3D场景当作2D图像投影到这个2D平面(计算机屏幕)上.GL_PROJECTION 矩阵就是用来做这种投影变换的.首先,该矩阵将所有观察空间的顶点坐标变换到裁剪空间,接着,将变换后的顶点坐标(即裁剪坐标)的每个分量(x,y,...翻译 2019-04-09 16:07:36 · 788 阅读 · 0 评论 -
另一种(Yet Another)三角形线性插值方法
本文简述了一种三角形线性插值的方法(本文仅讨论二维情况)相关问题给定一个三角形的顶点坐标(P0, P1 和 P2)以及对应的数值(V0, V1 和 V2),插值求解三角形内一点(坐标给定为P)的数值(V).问题说的有些抽象,给张图会清晰明了一些,图中的 V 即是我们想要插值求解的数值.插值方法如何求解呢?一般我们是采用比例面积的方法,见下图(图中 a0, a1 和 a2 分别代表三...原创 2019-04-17 23:35:23 · 4773 阅读 · 0 评论 -
编程小知识之生成排列
本文简述了两种生成排列的方法生成排列的方法不少,一种经典的方法就是采用递归,假设我们需要求解 1 ~ n 的所有排列,那么我们假设已经求解了 1 ~ n - 1 的所有排列,然后对于求解出的每一种排列(1 ~ n - 1 的一种排列),我们将 n 放置于该排列中可能的 n 个空位上,即可完成 1 ~ n 的排列求解.说的有些抽象,举个实际的例子:假设我们要求解 1 ~ 3 这三个数字的所...原创 2019-04-29 23:57:22 · 1442 阅读 · 3 评论 -
编程小知识之 CanvasScaler 的一点知识
本文简述了 Unity 中 CanvasScaler 的一点知识制作 UI 时,一般都需要进行多分辨率适配,基本的方法大概有以下几种:UI 参照单一的分辨率(参考分辨率)进行制作,实际显示时按照某种方式调整到实际的设备分辨率UI 按照所有可能的分辨率分别进行制作,实际显示时选择对应的设备分辨率显示上述两种方法(间)的某种平衡方式(譬如根据占比较高的几种分辨率来制作UI)UGUI ...原创 2019-05-16 18:07:16 · 624 阅读 · 3 评论 -
数学小记之数系
自然数,整数等数系概念虽然简单,但是想要理解的全面准确却也并不容易,这里简单一记,仅作参考~自然数自然数即非负整数(包括 0 和 正整数),字母表示为 N(Natural number) :0,1,2,3,4,5,6,...0, 1, 2, 3, 4, 5, 6, ...0,1,2,3,4,5,6,...整数整数是自然数的扩展,包括 自然数 和 负整数,字母表示为 Z(Zahle...原创 2018-10-13 13:24:45 · 651 阅读 · 0 评论