import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.DpC1ZpOZ.js";const F=JSON.parse('{"title":"mbcp.mp_math.utils","description":"","frontmatter":{"title":"mbcp.mp_math.utils","lastUpdated":false},"headers":[],"relativePath":"zht/api/mp_math/utils.md","filePath":"zht/api/mp_math/utils.md"}'),n={name:"zht/api/mp_math/utils.md"},l=t(`

mbcp.mp_math.utils

本模块定义了一些常用的工具函数

func clamp(x: float, min_: float, max_: float) -> float

説明: 区间限定函数

變數説明:

返回: float: 限定在区间内的值

源碼於GitHub上查看
python
def clamp(x: float, min_: float, max_: float) -> float:
    """
    区间限定函数
    Args:
        x ([\`float\`](https://docs.python.org/3/library/functions.html#float)): 值
        min_ (\`float\`): 最小值
        max_ (\`float\`): 最大值

    Returns:
        \`float\`: 限定在区间内的值
    """
    return max(min(x, max_), min_)

class Approx

method __init__(self, value: RealNumber)

説明: 用于近似比较对象

變數説明:

源碼於GitHub上查看
python
def __init__(self, value: RealNumber):
    """
        用于近似比较对象
        Args:
            value ([\`RealNumber\`](./mp_math_typing#realnumber)): 实数
        """
    self.value = value

method __eq__(self, other)

源碼於GitHub上查看
python
def __eq__(self, other):
    if isinstance(self.value, (float, int)):
        if isinstance(other, (float, int)):
            return abs(self.value - other) < APPROX
        else:
            self.raise_type_error(other)
    elif isinstance(self.value, Vector3):
        if isinstance(other, (Vector3, Point3, Plane3, Line3)):
            return all([approx(self.value.x, other.x), approx(self.value.y, other.y), approx(self.value.z, other.z)])
        else:
            self.raise_type_error(other)

method raise_type_error(self, other)

源碼於GitHub上查看
python
def raise_type_error(self, other):
    raise TypeError(f'Unsupported type: {type(self.value)} and {type(other)}')

method __ne__(self, other)

源碼於GitHub上查看
python
def __ne__(self, other):
    return not self.__eq__(other)

func approx(x: float, y: float = 0.0, epsilon: float = APPROX) -> bool

説明: 判断两个数是否近似相等。或包装一个实数,用于判断是否近似于0。

變數説明:

返回: bool: 是否近似相等

源碼於GitHub上查看
python
def approx(x: float, y: float=0.0, epsilon: float=APPROX) -> bool:
    """
    判断两个数是否近似相等。或包装一个实数,用于判断是否近似于0。
    Args:
        x ([\`float\`](https://docs.python.org/3/library/functions.html#float)): 数1
        y (\`float\`): 数2
        epsilon (\`float\`): 误差
    Returns:
        [\`bool\`](https://docs.python.org/3/library/functions.html#bool): 是否近似相等
    """
    return abs(x - y) < epsilon

func sign(x: float, only_neg: bool = False) -> str

説明: 获取数的符号。

變數説明:

返回: str: 符号 + - ""

源碼於GitHub上查看
python
def sign(x: float, only_neg: bool=False) -> str:
    """获取数的符号。
    Args:
        x ([\`float\`](https://docs.python.org/3/library/functions.html#float)): 数
        only_neg ([\`bool\`](https://docs.python.org/3/library/functions.html#bool)): 是否只返回负数的符号
    Returns:
        [\`str\`](https://docs.python.org/3/library/functions.html#str): 符号 + - ""
    """
    if x > 0:
        return '+' if not only_neg else ''
    elif x < 0:
        return '-'
    else:
        return ''

func sign_format(x: float, only_neg: bool = False) -> str

説明: 格式化符号数 -1 -> -1 1 -> +1 0 -> ""

變數説明:

返回: str: 符号 + - ""

源碼於GitHub上查看
python
def sign_format(x: float, only_neg: bool=False) -> str:
    """格式化符号数
    -1 -> -1
    1 -> +1
    0 -> ""
    Args:
        x ([\`float\`](https://docs.python.org/3/library/functions.html#float)): 数
        only_neg ([\`bool\`](https://docs.python.org/3/library/functions.html#bool)): 是否只返回负数的符号
    Returns:
        [\`str\`](https://docs.python.org/3/library/functions.html#str): 符号 + - ""
    """
    if x > 0:
        return f'+{x}' if not only_neg else f'{x}'
    elif x < 0:
        return f'-{abs(x)}'
    else:
        return ''
`,38),h=[l];function e(p,k,r,o,d,g){return a(),i("div",null,h)}const E=s(n,[["render",e]]);export{F as __pageData,E as default};