Clone
18
MacroMath
李若辰 edited this page 2026-03-17 12:00:17 +08:00
数学宏包含多个模块内容。
数学模块
- ● RandomFloat/Vector/Matrix:通过一个随机生成器快速获得随机值。
- ● Pmod:在正数空间上对值取余,负数情况下仍然会保持与正数相同的曲线形状。
- ● RoundToAny:将一个矢量四舍五入到任意的倍数,比如4.8舍入3.5得到3.5,6.2则得到7
- ● MinPositive:获取正数空间上的最小值。
- ● SmoothStep:获取t在(a,b)之间的埃尔米特过度
- ● LinearStep:获取t在(a,b)之间的线性过度
- ● RoundBasedOnMinimumDifference:将一个值根据最小的差值进行四舍五入
- ● DiscardLeastSignificantDecimal:舍弃不重要的小数位
- ● ClampWrapAngle:钳制角度
- ● GetNumberOfDecimalsForMinimumDifference:获取最小插值的小数个数
- ● CosineSimilarity:余弦相似度
- ● FibonacciRecursive:斐波那契迭代方式计算(会产生大量循环)
- ● FastInvSqrt:快速平方根倒数
- ● IsPrimeNumberRw:检查一个数是否是质数(这是一个娱乐用法,利用正则表达式判断是否为质数,性能消耗较高)
- ● GetCirclePoints:获取圆上的点
- ● GetRayIntersectionCircle:获取切于圆的线两点坐标
- ● GetHeightOfRoundArch:获取圆拱高度
- ● GetListFormAToB:获取从A到B的列表
- ● LerpTransform:创建lerp矩阵
- ● GetFraction:将一个值转为分数形式
文本模块
文本转换
自动值转换为文本。
将数值转为中文大写
NumberToChinese
沃格纳费舍尔拼写检查器
检查一对或多对文本是否相似,返回最相似的文本序列,及相似度。
打印数组
ListToString
文本构建池
提供StringBuilderPool对象池,可以使用常规的方法访问这个池,或使用GetStrBuilder直接获取一个StringBuilder,然后使用完毕后通过ReleaseStrBuilder立刻获取StringBuilder里拼接的文本,并释放这个stringBuilder。
XericLibrary里的所有需要文本拼接的地方都会用到这个成员,请严格按照池化对象操作流程使用,如果错误的使用释放的对象,可能会造成意外的错误。
用法:
// 旧版用法
public string GetString()
{
StringBuilder sb = MacroMath.GetStrBuilder();
sb.Append("something...");
return MacroMath.ReleaseStrBuilder(sb); // 释放这个构建器可以立刻获得里面的内容。
}
// 新版用法
public string GetString()
{
using (MacroMath.GetStringBuilder(out var sb))
{
sb.Append("something...");
} // using作用域结束后stringbuild会自动释放
}
另外还有一个文本拼接器单例:
// 这个不是对象池,而是一个单例对象,可以随用随取,但是注意不要用在多线程中。
MacroMath.CleanString(); // 先清空,避免有污染
MacroMath.AppendString("some"); // 拼接单个文本
MacroMath.BuildString("thing", "..."); // 拼接多个文本
MacroMath.GetStringAndClear(); // 返回 something...
文本包裹器
文本包裹器提供了一个可以在编译器中进行语法检查的功能,同时允许你将其当作一种模板字符串,向里面填充变量,委托,反射等用法。
其他用法
- join:和string.join类似,但可以直接在枚举器上链式调用,并且支持指定开头,结尾字符串
List<object> objects = new List<object>(); objects.Join(obj => obj.ToString()) - InsertCommasAtEachIntervals:和
join扩展类似,但是它只接受枚举器,返回一个在每个元素之间插入了一个逗号的枚举器 - LimitStringLength:限制输出的文本数量,可以通过
availableRate参数指定省略文本的位置,并在省略的文本除替换为replaceTruncateChars所代表的省略号。 - SimpleWrap:对超出长度的文本插入换行符号
- IsStringNullOrEmpty:支持链式调用的判断一个字符串是否为空
- IsStringNullOrWhiteSpace:支持链式调用的判断一个字符串是否为空或由空格组成
- IsSeparatelyCharEqual:支持链式调用地判断两个字符串是否相等,并忽略他们的空格 (方法逐字符比较低效,使用
IsWordSequenceEqual替换)