AI 协作日志

学生 Web 实验作品平台

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

# 实验三 AI协作记录(请学生在实际完成实验后填写)

> 教师参考代码包不包含虚构的AI协作过程。学生提交时需填写真实工具、提示词、独立测试与结论。

## AI协作1:矩阵和变换次序
- 我自己的预测:
同样的旋转 R 和平移 T,作用于列向量时,R・T (C) 和 T (C)・R 结果不一样。R・T (C) 是先把物体移动到 C 点,再绕世界原点旋转(公转);T (C)・R 是先绕自身原点旋转,再整体移动到 C 点(自转)。
- AI工具与原始提示词:
AI 工具与原始提示词:豆包;WebGL 列向量,4×4 齐次矩阵,解释 R*T 和 T*R 的区别,对比公转与自转,给出 js 矩阵乘法示例。
- AI的建议:
1. M1=R・Tc:先执行平移 Tc,再执行旋转 R,物体绕世界原点公转;
2. M2=Tc・R:先执行旋转 R,再执行平移 Tc,物体绕自身中心自转;
不能交换两个矩阵顺序,两者结果不等价。使用项目 CG3Transforms.multiply 做矩阵相乘,注意传入顺序。
- 本人计算、运行与证据:
设置初始中心 C=(0.5,0.25)。Task‑B 界面切换两种模式观察正方形运动;
R・Tc:正方形围着画布原点转圈;
Tc・R:正方形在 (0.5,0.25) 原地转动;
屏幕上两种运动轨迹明显区分,验证矩阵顺序带来行为差异。同时测试方向向量 w=0,平移变换不会改变方向向量数值。
- 采纳或修正结论:
- 采纳 AI 关于列向量 “右侧先执行” 的核心结论;自己核对矩阵乘法实参顺序,防止写反 multiply 参数,运行现象与理论预测一致。
## AI 协作 2:实际故障排查
## AI协作2:实际故障排查
- 错误现象与重现步骤:
Task‑C 动画,点击暂停 2 秒后再点继续,物体直接 “瞬移跳变”,不是从暂停位置继续运动。重现:运行动画→暂停等待数秒→点击继续,物体瞬间跳到很远位置。
- 我先检查了什么:
检查 requestAnimationFrame 没有重复创建;查看 elapsedTime,发现暂停的时候时间还在持续累加,没有冻结计时。
- AI工具与原始提示词:
 豆包;js requestAnimationFrame 动画,暂停后恢复物体瞬间跳动,是什么原因,给出排查思路。
- AI建议的候选原因与测试:
1. rAF 循环没有停止(我的 rAF 一直执行,排除);
2. 计时使用绝对时间,暂停期间真实时间依然流逝,恢复后直接拿系统时间计算,跳过暂停间隔;
3. 修复思路:不要直接拿 performance.now ()-startTime,暂停时记录暂停时刻,恢复时修正基准时间,扣除掉暂停的时长。
- 实测结果、修复与复测:
增加 lastTime 变量,暂停时保存当前时间,恢复时更新基准时间,暂停阶段不计入动画流逝时间。修复后:暂停任意时长再继续,物体从暂停的位置继续运动,不再瞬移跳变。复测多次现象稳定,故障解决。

## AI协作3:设计方案比较
- 我考虑的两种实现:
方案 A:每帧读取界面下拉框输入,直接用当前 UI 参数计算每个对象;
方案 B:对象创建点击的瞬间,把当时 UI 所有参数保存到对象自身属性,后续只读取对象内部保存参数。
- AI工具与原始提示词:
豆包;WebGL 多对象点击创建,是每帧读 UI 控件,还是创建对象时快照保存参数,对比两种方案优缺点。
- 对比、取舍与原因:
方案 A:代码写起来简短,但是改动下拉菜单,已经创建好的旧对象行为立刻跟着改变,不符合实验要求:“修改菜单只影响新创建对象,旧对象参数保留创建那一刻的值”。
方案 B:创建对象时做参数快照保存,会多占用一点内存;但是完全满足实验验收规则,新旧对象互不干扰,逻辑清晰,不容易产生 bug。
取舍:选择方案 B,点击画布新建对象时快照保存全部参数。
- 实际实现及核验:
- 点击 canvas 触发新建对象,读取此刻 shape/mode/ 方向 / 幅度 / 旋转中心等,存入 newObj 对象,push 进 objectList 数组;animate 阶段只读取对象内部保存字段,不再访问 UI 控件。
核验:创建 2 个三角形之后,修改下拉框平移方向;旧三角形运动完全不变,新点击创建的三角形使用新方向,符合实验文档验收要求。