Download scripts/analyze_md3_geometry_audit.py from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 2.98 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/scripts/analyze_md3_geometry_audit.py
- Command line
-
hf download hf://nmarshall/urt-rs/scripts/analyze_md3_geometry_audit.py
-
curl -L -o analyze_md3_geometry_audit.py https://huggingface.co/nmarshall/urt-rs/resolve/main/scripts/analyze_md3_geometry_audit.py
2.98 kB
| #!/usr/bin/env python3 | |
| """Measure recovered original-asset outputs against conventional geometry formulas.""" | |
| import hashlib,json,math,struct | |
| from pathlib import Path | |
| from analyze_qvm_acceleration import word,number | |
| from analyze_qvm import write_json | |
| def f(v):return struct.unpack('<f',struct.pack('<f',v))[0] | |
| def conventional_basis(t): | |
| a=list(map(number,t['sample_words64_108']));left=[a[3:6]+[0],a[6:9]+[0],a[9:12]+[0],[0,0,0,1]];right=[[number(v) for v in t['initial_record'][3+4*r:7+4*r]] for r in range(4)];out=[] | |
| for row in left: | |
| for col in range(4): | |
| value=f(row[0]*right[0][col]) | |
| for k in range(1,4):value=f(value+f(row[k]*right[k][col])) | |
| out.append(word(value)) | |
| return out | |
| def main(): | |
| points=[];matrices=[];sources={} | |
| for stem in ['md3-original-leaf','md3-original-hierarchy','md3-original-model-hit']: | |
| path=Path('docs/research')/(stem+'.json');data=path.read_bytes();sources[stem]=hashlib.sha256(data).hexdigest();rows=json.loads(data)['probes'] | |
| for row_index,p in enumerate(rows): | |
| leafs=[p] if stem=='md3-original-leaf' else [r['effect'] for r in (p['leaf_reports'] if stem=='md3-original-hierarchy' else p['hierarchies'][0]['leaf_reports'])] | |
| for leaf_index,r in enumerate(leafs): | |
| origin=list(map(number,r['input']['origin']));direction=list(map(number,r['input']['direction'])) | |
| for record in range(r['before'][16],r['after'][16]): | |
| values=r['after'][17+5*record:22+5*record];t=number(values[4]);expected=[word(f(x+f(t*y))) for x,y in zip(origin,direction)];distance=math.sqrt(sum((number(x)-number(y))**2 for x,y in zip(values[1:4],expected)));points.append({'source':stem,'row':row_index,'leaf':leaf_index,'record':record,'category':values[0],'parameter':values[4],'source_point':values[1:4],'conventional_ray_point':expected,'distance':distance}) | |
| if stem=='md3-original-hierarchy': | |
| for index,t in enumerate(p['transforms']): | |
| actual=t['final_record'][3:19];expected=conventional_basis(t);matrices.append({'source':stem,'row':row_index,'transform':index,'source_basis':actual,'conventional_basis':expected,'different_indices':[j for j,(a,b) in enumerate(zip(actual,expected)) if a!=b]}) | |
| write_json(Path('docs/research/md3-geometry-audit.json'),{'source_report_hashes':sources,'points':points,'matrices':matrices,'summary':{'point_comparisons':len(points),'noncoincident_points':sum(p['distance']>1e-5 for p in points),'largest_point_distance':max(p['distance'] for p in points),'fourth_row_differences':sum(bool(p['different_indices']) for p in matrices)},'limits':'Numeric comparison of recovered QVM outputs on original assets against conventional formulas. Neither formula is executed in the original game here. Differences are evidence requiring native/reference validation, not authorization to change source behavior.'}) | |
| if __name__=='__main__':main() | |