AI 协作日志

学生 Web 实验作品平台

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

# 实验四 AI协作记录
> 学号:202412211402011
> 姓名:金陈标
> AI工具与使用版本:豆包桌面端
## 协作1:变换次序核验(Task B)
### 我的目标与先验预测
想让两只立方体分别按 T·Ry·S 和 Ry·T·S 两种顺序显示,但我一开始拿不准:先平移再旋转和先旋转再平移到底差在哪。我以为只是位置先后的问题。
### 关键提示词
"列向量约定下,T·R 和 R·T 对局部原点世界坐标的影响分别是什么?绕Y轴转90°,平移(2,0,0),两种顺序中心各在哪?"
### AI建议摘要
列向量右边先作用。T·R:先旋转后平移,中心就是平移量本身;R·T:先平移再旋转,旋转会把这次平移的方向也转走,所以中心不是 (2,0,0)。
### 我的判断与手算
按建议手算 90°:
T·Ry·S:缩放→旋转→平移,原点最后被平移到 (2,0,0),中心 = (2,0,0)
Ry·T·S:缩放→平移→旋转,(2,0,0) 绕 Y 轴转 90° 落到 (0,0,-2)
### 我实际测试的参数与坐标
tx=2、θ=90°、s=1,程序状态栏输出。
### 运行现象/数值结果
T·R·S 中心:(2.00, 0.00, 0.00)
R·T·S 中心:(0.00, 0.00, -2.00)
和手算完全一致,两个立方体位置明显不同。
### 修正结论
采纳。交换顺序本质是"旋转作用在平移结果上",T·R≠R·T,矩阵乘法不交换。
## 协作2:程序调试(Task C或D)
### 错误现象与自己的初步分析
Task E 写父子矩阵时,打开页面画面没出来,控制台报错。我一开始以为是矩阵顺序写错了,反复改 chain 顺序还是不行。
### 提示词
"task-e.js 报错 chain is not defined,但我在 D 里用得好好的,可能是什么问题?"
### AI提出的可能原因
漏写了 `c.` 前缀,chain 被当成普通函数
括号里误加分号,导致 JS 语法解析中断
变量在别处被覆盖
### 我逐项完成的测试
先用 node --check 查语法,果然发现错误,再逐个读代码核对。
### 真实原因与修复
不是矩阵逻辑,是低级错误:三处 `chain(` 漏了 `c.`,还有一处 `c.T(-2,-1.3,0);` 分号写在括号中间。补上 `c.`、删掉多余分号后,语法检查全过,页面正常。
### AI建议是否采纳及理由
采纳。语法层面的问题先靠工具定位(node --check),别一上来就怀疑矩阵顺序。
## 协作3:主题场景协商(Task E)
### 我希望实现的对象关系
保留老师给的医学设备定位装置:左侧基座→机械臂→探头父子链,右侧样本台自转+标记公转。
### 关键提示词
"现有 WebGL2 框架里,基座 yaw、肩部 pitch 的父子矩阵链和右侧自转/公转,用什么顺序写最稳?"
### AI提供的两个方案与比较
方案A:保留设备定位主题,基座/肩部/末端用 T·R 继承,样本 T·R·S 自转,标记 T·R·T·S 公转
方案B:换成行星—卫星系统,结构类似但语义不同
### 我的选择理由
选 A。父链和右侧旋转机制都已经有模板,改动小、验证方便;行星方案语义不同但矩阵完全一样,没必要换。
### 实际矩阵链与交互参数
basePose = T(-2,-1.3,0)·Ry(yaw)
shoulderPose = basePose·T(0,.55,0)·Rz(pitch)
tipPose = shoulderPose·T(0,2.2,0)
样本 = T(samplePivot)·Ry(65°·t)·S
标记 = T(samplePivot)·Ry(42°·t)·T(1.16,.28,0)·S
参数:yaw、pitch、speed
### 两组对照测试
只调 yaw:基座、机械臂、探头一起转,装配不变;只调 pitch:基座静止,臂和探头动——父子关系成立
样本自转、标记公转轨迹不同,暂停 2 秒继续不突跳
### 最终结果和反思
三组部件各自按矩阵链运动,截图能正常打开。反思:父子继承的本质是"子矩阵右乘父位姿",非均匀缩放一定放最局部,别混进位姿传给下一层。