AI 协作日志
学生 Web 实验作品平台
学号:202412211402011 · 来源:ai-log.md
# 实验五AI协作与核验记录(学生填写) 学号:202412211402011 姓名:金陈标 日期:2026-11-12 > 必须记录**自己的预测、原始问题、AI建议、自主判断与实际核验**。AI代码不能代替本人解释。可附完整对话链接/导出记录,避免只放聊天截图而无测试证据。 ## 协作一:观察与投影概念核验(Task B / C,3分) 1. 我的问题和事先预测(M/V/P中谁变化?预期画面如何变化?): 我想搞清楚"移动物体"和"移动相机"到底差在哪。我一开始觉得两者都只是让画面变,应该差不多。但注意到如果是站立的位置换了,模型的世界坐标不该跟着变。 2. 我实际输入给AI的提示词: "WebGL2列向量、P·V·M·N 顺序下,我想分别改变 M、V、P 来观察画面。请给出能区分这三种原因的控制变量测试,并说明打印哪些数值核验,不要直接给整套代码。" 3. AI建议摘要(包括关键数学依据): - 改 M:动的是模型自身位姿,模型世界中心会跟着变; - 改 V:动的是相机,模型世界坐标不变,只是被从不同角度看; - 改 P:正交与透视只影响深度压缩方式,M/V 都不动。透视下同一尺寸物体近大远小,正交下相等。 4. 我的判断和采纳/拒绝理由: 采纳。关键是要打印"模型世界中心"这个数——如果它变了,说明动的是 M 而不是 V,这条最有用。 5. 我的测试参数、测试操作与结果(附截图/数值): - 切正面→侧面→顶部→斜上方,世界中心一直是 (0.00, 0.00, 0.00),说明改的是 V。 - 勾选等尺寸立方体对照:正交下近点/远点 x_ndc 都是 0.1182(一样大);透视下近 0.3485、远 0.1394(近大远小)。 - 透视 FOV 从 50° 调到 80°,同一点 x_ndc 从 0.3485 降到 0.1937,物体占画面变小。 6. AI是否正确?我最终修正了什么认识? 正确。我原来的"移动相机和移动物体差不多"是错的。真正的区分点不是画面长得像不像,而是看模型世界坐标有没有变,以及这个变化该由 M 还是 V 来承担。 ## 协作二:程序故障诊断(Task C / D,4分) 1. 真实错误现象和我起初怀疑的原因: Task D 写完 Shift+拖动后,在正面视角拖动模型能正常左右移动,但把相机切到侧面(eye=(8,0,0))再拖,模型不是沿画面水平方向走,而是往别的方向跑了。我起初怀疑是平移量算小了或者符号写反。 2. 向AI提出的诊断问题: "Shift+拖动平移在正面视角正常,切到侧面后方向就错了,模型会往斜向跑。可能是哪几个原因?怎么用最小测试区分?" 3. AI建议的至少两个可区分原因及测试: - 假设1:直接用世界坐标的 dx/dy 换算平移,没有用相机基向量 → 测试:把 eye 转到侧面看平移方向是否跟着变; - 假设2:right/up 基向量叉积顺序错了 → 测试:在正面视角观察 ty 是否非零; - 假设3:像素到世界单位的比例没按透视距离算,只是大小不对而不是方向不对 → 测试:改 FOV 看平移量是否变化。 4. 我实际逐项测试了什么?各自结果如何? - 正面拖 30px:tx=0.374、ty=0、tz=0,只有水平分量,说明方向本身在正面是对的,排除"整体算错"; - 侧面 eye=(8,0,0) 再拖 30px:tx=0、tz=−0.344,横向移动落到世界 −Z 方向。这不是错,而是相机转了 90° 之后"屏幕右"在世界里确实变成了 −Z; - 改 FOV 后平移量随之变化,证明比例项也在起作用。 5. 最终根因、修复处及修复结果: 根因是我最初把屏幕位移直接当成世界 X 位移来用,只有在正面视角碰巧看着对。修复方式是在 ex.drag 里先用 forward × up 求 right、right × forward 求 up2,再把 dx/dy 投影到这两个基向量上,并按当前投影的世界高度把像素换成世界单位(正交用 orthoH,透视用 2·dist·tan(fov/2))。修完侧面拖动方向与画面一致,验证值时 tx=0、tz=−0.344。 ## 全局诚信声明 - 我提交的代码均已本人运行并核验;无法解释的AI输出未直接作为完成结果。 - 我明确标注了使用AI辅助的功能和本人自主完成的关键判断。