# 离线只读验证：不访问网络、不操作设备，只读取同目录合成输入。
import json, math, struct, statistics
from pathlib import Path
def rotate(q,v):
 x,y,z,w=q; a=[x,y,z]
 cross=lambda p,r:[p[1]*r[2]-p[2]*r[1],p[2]*r[0]-p[0]*r[2],p[0]*r[1]-p[1]*r[0]]
 c=cross(a,v); cc=cross(a,c)
 return [round(v[i]+2*w*c[i]+2*cc[i],6) for i in range(3)]
def check(d):
 out=[]
 for q in d['quaternions']:
  if abs(sum(v*v for v in q)-1)>1e-6: out.append('非单位'); continue
  out.append(dict(forward=rotate(q,[0,0,1]),up=rotate(q,[0,1,0])))
 return out

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))
