Skip to content

### func `clamp() -> float` ​

説明: 区间限定函数

變數説明:

> - x: 待限定的值
> - min_: 最小值
> - max_: 最大值

返回: 限制后的值

源碼
python

    def clamp(x: float, min_: float, max_: float) -> float:
        """
        区间限定函数
        Args:
            x: 待限定的值
            min_: 最小值
            max_: 最大值

        Returns:
            限制后的值
        """
        return max(min(x, max_), min_)

### func `approx(x: float = 0.0, y: float = APPROX) -> bool` ​

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

變數説明:

> - x: 数1
> - y: 数2
> - epsilon: 误差

返回: 是否近似相等

源碼
python

    def approx(x: float, y: float=0.0, epsilon: float=APPROX) -> bool:
        """
        判断两个数是否近似相等。或包装一个实数，用于判断是否近似于0。
        Args:
            x: 数1
            y: 数2
            epsilon: 误差
        Returns:
            是否近似相等
        """
        return abs(x - y) < epsilon

### func `sign(x: float = False) -> str` ​

説明: 获取数的符号。

變數説明:

> - x: 数
> - only_neg: 是否只返回负数的符号

返回: 符号 + - ""

源碼
python

    def sign(x: float, only_neg: bool=False) -> str:
        """获取数的符号。
        Args:
            x: 数
            only_neg: 是否只返回负数的符号
        Returns:
            符号 + - ""
        """
        if x > 0:
            return '+' if not only_neg else ''
        elif x < 0:
            return '-'
        else:
            return ''

### func `sign_format(x: float = False) -> str` ​

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

變數説明:

> - x: 数
> - only_neg: 是否只返回负数的符号

返回: 符号 + - ""

源碼
python

    def sign_format(x: float, only_neg: bool=False) -> str:
        """格式化符号数
        -1 -> -1
        1 -> +1
        0 -> ""
        Args:
            x: 数
            only_neg: 是否只返回负数的符号
        Returns:
            符号 + - ""
        """
        if x > 0:
            return f'+{x}' if not only_neg else f'{x}'
        elif x < 0:
            return f'-{abs(x)}'
        else:
            return ''

### class `Approx` ​

### method `__init__(self, value: RealNumber)` ​

源碼
python

    def __init__(self, value: RealNumber):
        self.value = value

### method `__eq__(self, other)` ​

源碼
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)` ​

源碼
python

    def raise_type_error(self, other):
        raise TypeError(f'Unsupported type: {type(self.value)} and {type(other)}')

### method `__ne__(self, other)` ​

源碼
python

    def __ne__(self, other):
        return not self.__eq__(other)