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 替换)