AI 协作日志

学生 Web 实验作品平台

学号:202412211401014 · 来源:ai-log.md

# 实验五AI协作与核验记录(学生填写)
学号:____202412211401014____ 姓名:____谢如栋____ 日期:____11.9____

## 协作一:观察与投影概念核验(Task B / C,3分)
1. 我的问题和事先预测:
我想区分移动物体(修改M)和移动相机(修改V);
预测:只修改V,模型世界坐标不变,只是画面改变;正交投影远近物体表观尺寸相同,透视近大远小。
2. 我实际输入给AI的提示词:
> 在WebGL2右手坐标系、列向量和P·V·M的顺序下,我想比较移动物体与移动相机、正交与透视投影。请给我三组能区分原因的控制变量实验,指出应改变M/V/P中的哪项,说明可以打印哪些坐标数值进行核验,不要直接生成整套代码。
3. AI建议摘要:
- 实验1:保持V/P不变,修改M的tx;模型世界坐标改变,画面物体平移。
- 实验2:保持M/P不变,修改V的eye;模型世界坐标不变,画面物体移动。
- 实验3:保持M/V不变,切换P;世界完全不变,仅渲染画面表观变化。
核验打印模型世界中心、eye/target参数。
4. 我的判断和采纳/拒绝理由:建议逻辑符合课程理论,采纳作为测试方案。
5. 我的测试参数、测试操作与结果:
测试B页面,点击侧面预设,观察状态栏【模型世界中心】不变,相机eye发生变化,符合只修改V。
6. AI是否正确?我最终修正了什么认识:正确;区分画面视觉移动≠物体世界坐标移动。

## 协作二:程序故障诊断(Task C / D,4分)
1. 真实错误现象和我起初怀疑的原因:
现象:切换透视投影模型被拉伸;怀疑near/far设置错误。
2. 向AI提出的诊断问题:
> 我的OBJ能显示,但切换透视投影后形状被拉伸/裁剪或者鼠标拖动方向异常。请从宽高比、裁剪面、矩阵顺序和观察基向量中提出至少三种假设,分别给一项最小测试,先帮助排查,不要直接重写完整程序。
3. AI建议的至少两个可区分原因及测试:
假设1:projection传入aspect错误;测试打印aspect值,观察是否等于canvas宽/高。
假设2:near<=0;测试把near设置为0.1观察模型恢复。
假设3:矩阵顺序写反,P*V*M写成M*V*P。
4. 我实际逐项测试了什么?各自结果如何:
打印aspect,确认传入正确;near=0.1模型正常;框架着色器已经是P*V*M,顺序没问题。
5. 最终根因、修复处及修复后结果:本次没有bug;我临时把near改成‑0.1制造报错,界面抛出near>0异常,恢复near=0.1恢复画面。

## 协作三:综合工作台方案比较(Task E,3分)
1. 我准备完成的观察任务:实现绕世界指定点旋转,同时绘制标记方块,区分绕点旋转和物体自身自转。
2. 向AI询问的两种设计方案:
> 我已完成OBJ导入、观察视角、正交/透视以及鼠标键盘变换。请提供两个能在40分钟内复用已有WebGL2模块的观察台拓展设计,对比功能、矩阵链、交互参数和验证难度。不引入Three.js、光照、纹理或复杂模型编辑器。
3. 两种方案的功能、矩阵链、测试难度对比:
方案A:绕世界定点旋转 $T(P)RyT(-P)$,绘制标记方块;难度中等;可以直接拖动滑块验证标记位置。
方案B:相机轨道旋转(环绕target);修改eye,矩阵球面插值;难度高。
4. 最终采纳的方案与理由:采纳方案A绕定点旋转;复用框架extra接口,不需要修改app.js,验证简单。
5. 自己实现或修改的功能差异:实现ex.extra,返回两个立方体标记对象;P写死[2.2,0,0];读取state.orbit作为旋转角度。
6. 预测与实际结果对照,仍存在的局限:拖动orbit滑块,橙色方块绕黄色方块旋转;局限:P是写死,没有UI输入框修改旋转中心点。

## 全局诚信声明
- 我提交的代码均已本人运行并核验;无法解释的AI输出未直接作为完成结果。
- 我明确标注了使用AI辅助的功能和本人自主完成的关键判断。