AI 协作日志

学生 Web 实验作品平台

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

# 实验四 AI协作记录

> 学号:  202412211401017
> 姓名:  叶毅
> AI工具与使用版本:豆包  
> 请用真实过程填充,保留关键提示词原文;不要只贴整段AI代码或聊天截图。

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

### 我的目标与先验预测
一开始以为"平移2再转90°"和"转90°再平移2"差不多,立方体最后应该都在同一个位置。

### 关键提示词
> 列向量约定下,局部原点(0,0,0),平移(2,0,0),绕Y轴转90°。T·R 和 R·T 两种写法,原点最后世界坐标分别是多少?帮我理一下步骤,不要直接给完整代码。

### AI建议摘要
T·R 是先旋转再按世界坐标平移,平移方向不受旋转影响;R·T 是先平移,平移出来的那个向量再被旋转带偏,所以方向会变。

### 我的判断与手算
按 AI 说的思路推了一下:
- T·R:原点先被R转(原点不动),再平移(2,0,0),应该落在(2,0,0)。
- R·T:原点先平移到(2,0,0),再绕Y转90°,x方向被甩到-z,大概落在(0,0,-2)。

### 我实际测试的参数与坐标
tx=2、angle=90°、scale=1,点"一键设置90°测试"。

### 运行现象/数值结果
状态栏显示:T·R·S中心(2.00, 0.00, 0.00),R·T·S中心(0.00, 0.00, -2.00)。和手算完全一致,暖色立方体在x=2那边,青色立方体在z=-2那边。

### 修正结论
之前直觉错了,矩阵乘法真的不可交换。R·T 里那个平移向量是被旋转过的,不是世界坐标里的(2,0,0)了。theta=0°时两个结果碰巧一样,但不能说明乘法可交换。

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

### 错误现象与自己的初步分析
一开始写绕P旋转矩阵时,把 T(-P) 和 T(P) 的位置放反了,写成了 T(q)·T(-P)·R·T(P)。结果立方体转起来不是绕着黄色P点画圆,而是越飞越远,轨道中心明显不在P上。

### 提示词
> 我想让立方体绕世界坐标点P旋转,矩阵链应该怎么排?我把 T(P) 放在最右边、T(-P) 放在最左边,结果轨迹不对,可能哪里错了?

### AI提出的可能原因
绕任意点旋转的标准写法是 T(P)·R·T(-P)·T(q)·S。先 T(-P) 把P挪到原点,在原点转完,再 T(P) 挪回去。如果 T(P) 和 T(-P) 顺序反了,相当于先在原点转完再整体平移P,物体就不是绕P转了。

### 我逐项完成的测试
1. 先按反序写,设 P=(1,0,1),转90°,看到立方体跑到离P很远的地方,确认顺序有问题。
2. 改成 T(P)·R·T(-P)·T(q)·S,同样P=(1,0,1)、90°,立方体从(2,0,0)走到(0,0,0),正好在P周围。
3. 跑满360°,立方体回到初始位置(2,0,0),黄色P标记一直没动。

### 真实原因与修复
就是 T(P) 和 T(-P) 顺序搞反了。改过来之后轨道就对了。另外还碰到一个小问题:暂停按钮按下去之后角度还在自己涨,查了一下 loop 里没判断 playing,加了 if(playing) 才正常。

### AI建议是否采纳及理由
采纳了。顺序改完一次就对,360°回原位、P不移动这两个验收点都过了。

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

### 我希望实现的对象关系

### 关键提示词

### AI提供的两个方案与比较

### 我的选择理由

### 实际矩阵链与交互参数

### 两组对照测试

### 最终结果和反思