AI 协作日志

学生 Web 实验作品平台

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

# 实验四 AI协作记录

> 学号:202412214301008  
> 姓名:谭帅  
> AI工具与使用版本(如适用):Codex(本次对话未确认具体模型版本)  
> 本记录仅对应实验四。依据真实对话、代码修改和 AI 执行的数值检查整理;未进行的协商、个人手算和浏览器实测不写成已完成。

## 协作1:变换次序核验(Task B)

### 我的目标与先验预测
我已填写 A、B、C 的部分变换代码,请 AI 检查 A~D,重点排查 A 修改坐标后图形不动的问题。本次未在提问前提交 Task B 的数值预测。

### 关键提示词
“接下来做实验四。检查task a b c d 的错误。
a 我写好了,为什么改坐标不会动”

### AI建议摘要
Task B 的两组矩阵顺序正确:第一组为 T·Ry·S,第二组为 Ry·T·S。在列向量约定下,变换从右向左作用。AI 建议用 tx=2、角度=90°、缩放=1 核对两个世界中心,预期分别为 (2,0,0) 和 (0,0,-2)。

### 我的判断与手算
本次未提供独立手算过程。以下是根据代码与 AI 解释整理的推导:模型中心为 (0,0,0),缩放不会改变它。T·Ry·S 先旋转原点,再平移,中心为 (2,0,0);Ry·T·S 先移到 (2,0,0),再绕世界 Y 轴旋转90°,中心为 (0,0,-2)。

### 我实际测试的参数与坐标
对话中没有记录我实际操作 Task B 的测试参数。建议待核验参数为 tx=2、角度=90°、缩放=1;上述坐标属于推导值。

### 运行现象/数值结果
AI 读取 Task B,确认 modelTRS 使用 c.chain(move, rotate, scale),modelRTS 使用 c.chain(rotate, move, scale)。本次只完成代码次序核验,未执行 Task B 浏览器测试,不将预期坐标写为页面实测结果。

### 修正结论
平移和旋转通常不能交换次序。T·Ry·S 中中心先保持在原点再被平移;Ry·T·S 中平移后的位置还会被旋转。Task B 的矩阵代码未修改。

## 协作2:程序调试(Task C或D)

### 错误现象与自己的初步分析
我明确反馈的现象是 Task A 修改坐标后图形不动,当时没有确定原因。同时请求检查 A~D。Task D 的问题是 AI 阅读代码时发现的,并非我在对话中反馈的运行现象。

### 提示词
“接下来做实验四。检查task a b c d 的错误。
a 我写好了,为什么改坐标不会动”
“帮我改好”

### AI提出的可能原因
1. A 的 mat4.scale、mat4.translate 第三个参数需要三分量数组,原代码却传入多个单独数字,导致读取分量失败,矩阵出现 NaN。
2. D 读取了 yaw、pitch,但没有将它们用于旋转矩阵;肩部和末端也没有继承父级位姿。
3. C 的自转、公转矩阵和角速度乘 dt 的更新逻辑经代码检查未发现相关错误;手动核对角度时应先暂停动画。

### 我逐项完成的测试
我授权 AI 直接修改代码。下列检查由 AI 使用 Node 和项目实际 gl-matrix 库执行,不是我手动进行的浏览器测试:
- 执行修改后的 A、D 脚本,以模拟控件和绘制接口取得模型矩阵,检查矩阵元素均为有限数值。
- A:平移 (1,0,0)、角度90°、缩放1,中心为 (1,0,0)。随后将平移改为 (-2,1,3),中心随之变为 (-2,1,3)。
- D:基座角0°,肩角由0°改为90°,基座绘制矩阵保持不变,探头几何中心为约 (-2.52,-0.75,0)。
- D:保持肩角90°,将基座角改为90°,探头几何中心变为约 (0,-0.75,2.52)。这里检查的是探头几何中心,包含局部0.32的偏移,不是末端关节坐标。

### 真实原因与修复
A 将参数改为数组:
- c.mat4.scale(S, S, [scale, scale, scale])
- c.mat4.translate(T, T, [x, y, z])

D 补全父子矩阵链:
- basePose = T(0,-1.3,0) · Ry(yaw)
- shoulderPose = basePose · T(0,0.55,0) · Rz(pitch)
- tipPose = shoulderPose · T(0,2.2,0)

各部件的形状缩放继续留在绘制矩阵中,不传入关节位姿,以免父级非均匀缩放影响子部件尺寸和关节间距。
数值检查通过,证明 A 的中心跟随平移,D 的肩部运动不改变基座,基座旋转会带动子部件。本次尚未记录浏览器画面实测。

### AI建议是否采纳及理由
已采纳,并明确要求 AI “帮我改好”。修改只涉及 js/task-a.js 和 js/task-d.js,对应具体参数错误和缺失的父子继承;B、C 保持不变。数值检查提供了修复依据,但不能替代浏览器显示和交互检查。

## 协作3:主题场景协商(Task E)

### 我希望实现的对象关系
本次对话尚未讨论 Task E 的主题和对象关系,暂未记录。

### 关键提示词
尚未提出 Task E 主题协商请求,无对应提示词。

### AI提供的两个方案与比较
本次没有发生两方案协商,不补造方案或比较过程。

### 我的选择理由
尚未在对话中作出 Task E 的方案选择。

### 实际矩阵链与交互参数
本次未检查或修改 Task E,不能据本次对话确认其实际实现。

### 两组对照测试
本次未进行 Task E 的两组对照测试,待实际完成后补充参数、预测和观察结果。

### 最终结果和反思
本次协作完成了 A~D 的代码检查、A/D 的修复和相关数值验证。Task E 协商与对照测试尚未记录,因此本日志不代表实验四所有要求均已完成。