# 离线只读验证：不访问网络、不操作设备，只读取同目录合成输入。
import json, math, struct, statistics
from pathlib import Path
def check(d):
 from itertools import product
 a=math.radians(d['degrees_z']); c=math.cos(a); s=math.sin(a)
 def rot(p): return [p[0]*c-p[1]*s,p[0]*s+p[1]*c,p[2]]
 corners=[rot(p) for p in product(*zip(d['min'],d['max']))]
 lo=[min(p[i] for p in corners) for i in range(3)]; hi=[max(p[i] for p in corners) for i in range(3)]
 assert all(lo[i]-1e-9<=p[i]<=hi[i]+1e-9 for p in corners for i in range(3))
 two=[rot(d['min']),rot(d['max'])]
 return dict(world_min=[round(v,6) for v in lo],world_max=[round(v,6) for v in hi],two_corner_x=[round(min(p[0] for p in two),6),round(max(p[0] for p in two),6)])

if __name__=='__main__':
 fixture=json.loads(Path(__file__).with_name('fixture.json').read_text(encoding='utf-8'))
 actual=check(fixture['input'])
 assert actual==fixture['expected'], {'实际':actual,'预期':fixture['expected']}
 print(json.dumps({'状态':'通过','实际':actual,'边界':'仅离线合成样例，现场未测'},ensure_ascii=False))
