AI 协作日志
学生 Web 实验作品平台
学号:202412211402023 · 来源:ai-log.md
# 实验四 AI协作记录
> 学号: 202412211402023
> 姓名: 杨珊珊
> AI工具与使用版本(如适用): Codex
> 请用真实过程填充,保留关键提示词原文;不要只贴整段AI代码或聊天截图。
## 协作1:变换次序核验(Task B)
### 我的目标与先验预测
目标是分清列向量约定下 T·Ry·S 与 Ry·T·S 的作用顺序,以及它们对局部原点的影响。本次没有留下本人在查看 AI 分析前的独立预测记录,因此不倒填为先验预测。
### 关键提示词
在本实验 WebGL2 的右手坐标系、列向量约定下,CG4.chain(A,B,C)=A·B·C,CG4.R 接受角度。设局部原点为(0,0,0),T=T(2,0,0),R=Ry(θ),S=S(1)。请分别计算 θ=0°、90°、180°时 T·R·S 与 R·T·S 的世界中心,给出计算步骤,解释平移方向为何变化,并建议我应打印哪些矩阵或测试点。不要重写完整程序。请区分理论预期与需要我实际运行确认的结果。
### AI建议摘要
列向量下右侧矩阵先作用。局部中心 o=(0,0,0,1):缩放和旋转都不改变原点,因此 TRS·o 的中心为 (2,0,0)。RTS 则先把中心平移到 (2,0,0),再围绕世界 Y 轴旋转,中心为 (2cosθ,0,-2sinθ)。
### 我的判断与手算
供本人核对的手算依据:绕 Y 轴有 x'=xcosθ+zsinθ,z'=-xsinθ+zcosθ。因此正转90°使 +X 方向转向 -Z,RTS 中心为 (0,0,-2)。0°时结果相同只是特殊角度,不能说明一般可交换。
建议输出 modelTRS、modelRTS,以及 c.point(modelTRS,0,0,0)、c.point(modelRTS,0,0,0)。也可检查非中心点以确认朝向,不只检查对象中心。
### 我实际测试的参数与坐标
以下是本地矩阵库实际计算值,已将极小浮点数按0显示:
| tx | θ | s | TRS 理论中心 | AI 数值中心 | RTS 理论中心 | AI 数值中心 |
|---:|---:|---:|---|---|---|---|
| 2 | 0° | 1 | (2,0,0) | (2,0,0) | (2,0,0) | (2,0,0) |
| 2 | 90° | 1 | (2,0,0) | (2,0,0) | (0,0,-2) | (0,0,-2) |
| 2 | 180° | 1 | (2,0,0) | (2,0,0) | (-2,0,0) | (-2,0,0)
### 运行现象/数值结果
B 页为了区分两只立方体,把辅助标记额外抬高或降低 .7;应读取状态栏中心,而非把标记自身位置当成模型中心。
### 修正结论
AI 数值核验支持数学推导:两种次序只有在特定条件下相同,旋转和平移通常不可交换。这个结论不依赖颜色差异。
## 协作2:程序调试(Task C或D)
### 错误现象与自己的初步分析
const basePose = c.T(0,-1.3,0);
const shoulderPose = c.T(0,.55,0);
const tipPose = c.T(0,2.2,0);
```
基座未使用 yaw;肩部没有继承 basePose,也未使用 pitch;末端没有继承 shoulderPose。臂段顶点与末端关节的位置不一致。
### 提示词
我的 Task D 使用 basePose、shoulderPose、armDraw、tipPose 和 probeDraw。现在 basePose=T(0,-1.3,0),shoulderPose=T(0,.55,0),tipPose=T(0,2.2,0),armDraw 包含 S(.38,2.2,.45)。请针对“遗漏父矩阵”“矩阵相乘顺序错误”“把 armDraw 的非均匀缩放作为父位姿传递”各提出一项能区分原因的数值测试,列出应比较的点和预期值,并给出最小修改建议。不要重写整份程序,不要把尚未发生的网页测试写成已经完成。
### AI提出的可能原因
可能原因 | 区分测试 | 正确时应当看到什么 |
|---|---|---|
| 遗漏父位姿 | 固定 pitch=60°,把 yaw 从0°改为90° | tip 由 (-1.9053,.35,0) 变为 (0,.35,1.9053) |
| 平移与关节旋转顺序错误 | 固定 yaw=0°,改变 pitch,同时观察 shoulder 原点 | shoulder 始终为 (0,-.75,0),绕肩转动不会让肩本身绕别处移动 |
| 继承绘制矩阵的非均匀缩放 | 比较 armDraw 对局部上端(0,.5,0)的结果与 tipPose 原点;只改臂宽/深 | 两个连接点重合;臂宽深变化不改变关节位姿或把探头压扁
### 我逐项完成的测试
对照 | 本地计算结果 | 含义 |
|---|---|---|
| 原模板臂段上端 | (0,2.75,0) | 由原 shoulder、armDraw 计算 |
| 原模板 tip 原点 | (0,2.20,0) | 与臂段上端相差 .55 |
| 修正候选:yaw=0°,pitch=0° | shoulder=(0,-.75,0),tip=(0,1.45,0) | 加入基座与肩部继承 |
| 修正候选:yaw=0°,pitch=60° | tip=(-1.9053,.35,0) | 肩部局部转动生效 |
| 修正候选:yaw=90°,pitch=60° | tip=(0,.35,1.9053) | 父旋转影响子对象 |
| 修正候选:只改变 pitch | base 矩阵不变 | 子关节运动不反向修改父位姿 |
| 修正候选:臂上端与 tip | 数值相同 | 验证装配连接
### 真实原因与修复
已定位的模板原因是父位姿继承及旋转项缺失。建议替换为:
```javascript
const basePose = c.chain(c.T(0, -1.3, 0), c.R("Y", yaw));
const shoulderPose = c.chain(basePose, c.T(0, .55, 0), c.R("Z", pitch));
const tipPose = c.chain(shoulderPose, c.T(0, 2.2, 0));
```
几何缩放保留在 baseDraw、armDraw 和 probeDraw 内,不传给下一层关节。上述候选矩阵已通过本地数值核验,尚未写回学生源代码并完成浏览器回归。
### AI建议是否采纳及理由
判断时应注意:pitch=0°时 tip 位于基座 Y 轴上,改 yaw 不会改变其中心位置。应该使用非零 pitch 测试父继承,不能把这个轴上特例误判为失败。
## 协作3:主题场景协商(Task E)
### 我希望实现的对象关系
设计目标是在现有框架内表现父子继承、自转、公转及独立控制,并加入能说明矩阵关系的功能变化。下面的方案选择是 AI 建议,待本人确认和实施。
### 关键提示词
我已学习 T·R·S、绕指定点旋转和父子变换。请基于现有 WebGL2 立方体框架,比较两个可在约40分钟内尝试的场景:①新增末端伸缩自由度的自动化检测台;②行星—卫星系统。分别列出部件、父子关系、主要矩阵链、独立参数、复合变换机制、实现工作量和两组可手算的验证状态。推荐一种能在现有模板上产生实质功能变化的方案,不引入外部库、光照或相机拾取,不生成整套程序。明确哪些是设计预期,哪些需要我亲自运行确认。
### AI提供的两个方案与比较
项目 | 自动化检测台+伸缩探头 | 行星—卫星系统 |
|---|---|---|
| 部件 | 基座、机械臂、伸缩杆、检测头、样本台、样本、环绕标记 | 恒星、行星、卫星,可另加轨道标记 |
| 父子关系 | base→shoulder→tip→移动关节→检测头 | 恒星参考系→行星轨道位姿→卫星轨道位姿 |
| 机制 | 关节旋转、局部直线移动、样本自转、标记公转 | 行星自转、行星公转、卫星公转 |
| 独立参数 | yaw、pitch、reach;动画倍速 | 行星轨道角、卫星轨道角或速度;自转速度 |
| 改动量 | 较小,复用现有机械臂及动画 | 较大,需要重组 E 的部件和控件 |
| 核验难度 | 连接点可手算,移动关节容易隔离测试 | 需注意卫星不要错误继承行星绘制缩放或不希望继承的自转 |
| 功能性差异 | 新增移动自由度,工作端可沿局部轴伸缩并保持连接 | 重组为多级轨道关系,改变场景运动结
### 我的选择理由
选择理由
AI 建议选择自动化检测台:它可以复用 A—D 的矩阵知识,在模板基础上增加清晰的移动关节,并保留自转、公转、暂停、倍速和截图。与只改颜色或标题相比,reach 会实际改变工作端坐标。
### 实际矩阵链与交互参数
设 L=2.2,h=.55,伸出量 e=reach,固定检测头高度 d=.65:
```text
Mbase = T(-2,-1.3,0) · Ry(yaw)
Mshoulder = Mbase · T(0,h,0) · Rz(pitch)
Marm = Mshoulder · T(0,L/2,0) · S(.38,L,.45)
Mtip = Mshoulder · T(0,L,0)
Mslide = Mtip · T(0,e,0)
Mrod = Mtip · T(0,e/2,0) · S(.18,e,.18)
Mprobe = Mslide · T(0,d/2,0) · S(.73,d,.73)
工作端 = Mslide · (0,d,0,1)
Mspecimen = T(2,-.48,0) · Ry(65t) · S(.7,.78,.7)
Mmarker = T(2,-.48,0) · Ry(42t) · T(1.16,.28,0) · S(.22)
```
### 两组对照测试
状态 | 参数 | 理论 tip | AI 数值 tip | 理论工作端 | AI 数值工作端 |
|---|---|---|---|---|---|
| 1 | yaw=0°,pitch=0°,reach=.4,t=0 | (-2,1.45,0) | (-2,1.45,0) | (-2,2.50,0) | (-2,2.50,0) |
| 2 | yaw=90°,pitch=60°,reach=.8,t=0 | (-2,.35,1.9053) | (-2,.35,1.9053) | (-2,1.075,3.1610) | (-2,1.075,3.1610) |
独立测试 reach:固定 yaw=pitch=0°,从 .4 调到 .8,工作端 Y 增加 .4,基座和 tip 位姿不变。AI 数值计算已验证这点以及伸缩杆两端的连接关系。
样本机制测试:模拟时间 t=1 时,样本旋转65°,中心仍为 (2,-.48,0);环绕标记转42°,中心约为 (2.8620,-.2,-.7762)。标记是在比样本中心高 .28 的水平面内公转。
暂停逻辑模拟:C 初始45°、速度35°/秒,累计1秒后为80°;模拟暂停2秒不变,恢复首个1/60秒仅增 .5833°。E 以2倍速累计1秒,t=2;暂停2秒不变,恢复首帧为2.0333。这里模拟的是更新表达式,不是实测浏览器帧率或按钮行为。
### 最终结果和反思
本次设计分析给出了可实施的功能差异,并用真实矩阵库核验候选关系。其局限是尚未把功能写入网页
反思要点:父子继承依靠矩阵链;新增移动关节应写在父关节局部坐标中;几何缩放不要进入下一层关节位姿;理论值、AI 本地数值、本人网页实测是三个不同层次的证据。