查看器取景距离改用前校验有限正数
- packages/model3d-viewer/src/framing.ts:computeModel3dViewerFitDistance 不再无条件采信调用方传入的 distance,改为 Number.isFinite 且大于 0 才采用,否则回落包围盒角点求解,避免 0 / 负数 / NaN 让 maxDistance 小于 minDistance 验证:npx vitest run packages/model3d-viewer、npx tsc -p tsconfig.typecheck-guardrails.json --noEmit
This commit is contained in:
@@ -200,8 +200,11 @@ export function createModel3dViewerFitSolver(
|
||||
export function computeModel3dViewerFitDistance(
|
||||
input: Model3dViewerFramingInput,
|
||||
): number {
|
||||
if (input.distance !== undefined) {
|
||||
return input.distance;
|
||||
// 调用方给的距离会直接决定 near / far / 轨道缩放范围,非法值(0、负数、NaN)
|
||||
// 会让 maxDistance 小于 minDistance,取景与轨道钳制一起失效,故按无效处理。
|
||||
const distance = input.distance;
|
||||
if (distance !== undefined && Number.isFinite(distance) && distance > 0) {
|
||||
return distance;
|
||||
}
|
||||
const solver = createModel3dViewerFitSolver({
|
||||
center: computeModel3dViewerBoxCenter(input.box),
|
||||
|
||||
Reference in New Issue
Block a user