AI 协作日志

学生 Web 实验作品平台

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

# 实验四 AI协作记录

学号:202412211402016  
姓名:  
AI工具:Codex(本次会话未提供具体模型版本)  
日期:2026-10-26

## 记录范围与真实提示词

本日志沿用实验一及实验二、三的“目标—提示词—AI建议—判断—测试—结果—结论”结构。代码补全、数值测试和截图核验由Codex执行;下文不将AI的计算与自动测试写成学生本人已经亲自完成的活动。姓名留空,提交前由本人填写。

本次用户提供实验四说明、学生版ZIP及已解压目录,真实请求为:

> D:\计算机图形学\实验4\实验4_学号同样的事情

“同样的事情”承接此前的实际要求:补全TODO、保持基础文件、根据学号重命名、整理真实AI日志并生成规范ZIP。本次没有另行发出三条针对算法的咨询提示词;下列三个协作点是Codex对同一请求的分项处理,未复制指导书的建议提示词并冒充用户真实对话。用户的独立先验预测、亲自运行结果尚未在会话中提供,需本人实际复核后如实补充。

## 协作1:复合矩阵与变换次序(A、B、C)

### 目标与预测依据

使用右手坐标系与列向量,保持原始局部立方体顶点不变,只构造每个对象的Model矩阵。Codex在实现时采用以下手算预期:

- A:M=T(tx,ty,tz)·Ry(θ)·S。局部原点经缩放、旋转后仍为原点,最后由T移至(tx,ty,tz),改变角度或大小不移动中心。
- B:TRS的中心为(tx,0,0);RTS的中心为(tx·cosθ,0,-tx·sinθ)。tx=2、θ=90°时分别为(2,0,0)和(0,0,-2)。
- C:绕P旋转的中心为P+Ry(θ)·(q-P)。例如q=(2,0,0)、P=(1,0,0.5)、θ=90°,中心应为(0.5,0,-0.5)。

这些是AI的数学分析,不冒充用户在咨询前的个人预测。

### 关键提示词与AI建议

使用上述真实请求。Codex建议复用CG4.chain、T、R、S和point,分别计算矩阵与局部原点的世界坐标,以坐标而非仅凭截图判断正确性。

### 判断与实现

采用T·R·S与R·T·S两条独立矩阵链。T最后作用时,平移向量不随旋转;R最后作用时,已平移的中心也被旋转。θ=0°时两者相同,只是特殊情况,不能据此证明矩阵可交换。

绕指定点使用T(P)·Ry·T(-P)·T(q)·S:先把旋转中心移到原点,完成旋转,再移回P。自转使用T(q)·Ry·S。

### 实际测试与数值结果(Codex执行)

本地Edge打开A—E,检查WebGL2初始化、Shader、深度测试、绘图及JavaScript异常。矩阵通过运行时绘制调用读取,测试用的观察代码不写入提交程序。

| 项目 | 测试参数 | 实测/检查结果 |
|---|---|---|
| A | (tx,ty,tz)=(1,0,0)、θ=90°、s=1 | 中心(1,0,0) |
| A | 改s=2 | 中心不变 |
| A | ty=0.6、tz=-0.4 | 中心(1,0.6,-0.4) |
| B | tx=2、θ=0° | 两者中心均(2,0,0) |
| B | tx=2、θ=90° | TRS=(2,0,0),RTS≈(0,0,-2) |
| B | tx=2、θ=180° | TRS=(2,0,0),RTS≈(-2,0,0) |
| C | P=(0,0,0)、θ=90° | 自转中心(2,0,0),公转中心≈(0,0,-2) |
| C | P=(1,0,0.5)、θ=90° | 公转中心(0.5,0,-0.5) |
| C | θ=360° | 返回(2,0,0) |

B的两种单独显示模式、A的重置、C的速度0及暂停/继续检查通过。角速度来自现有speed控件,内部按度/秒乘dt更新,R辅助函数负责弧度换算。

### 结论

采纳以“矩阵链+测试点坐标”双重核验的办法。浮点接近零的值允许小误差;公共矩阵库、Shader及固定观察投影均未改动。

## 协作2:父子层次调试(D)

### 真实问题与初步分析

未完成的学生模板中,shoulderPose直接取世界平移T(0,0.55,0),tipPose直接取T(0,2.2,0),都没有继承父关节,yaw和pitch也未进入矩阵。因此探头和臂端脱离,拖动关节不能形成正确联动。

这是本次实际复现的模板占位问题,不是假设曾在完成版中出现过的故障。

### 提示词与AI提出的候选原因

仍使用本次真实补全请求,未虚构独立Bug Hunt咨询。Codex按以下候选原因排查:

1. 子关节缺少父位姿:只改yaw,查看子对象矩阵是否改变。
2. 平移与旋转次序错误:固定yaw,手算pitch=30°的臂端位置并比较。
3. 将绘制缩放传给下一层:读取探头三个矩阵列向量长度,查看其尺寸是否被臂长2.2再次放大。

### 对照测试与实际结果(Codex执行)

在原始模板D页设pitch=30°、yaw=90°,由臂段绘制矩阵求得臂顶为(0,2.75,0),由探头绘制矩阵求得底部约(0,2.195,0),二者相距约0.555世界单位,明确复现装配脱离。

完成版使用:

```text
B = T(0,-1.3,0) · Ry(yaw)
H = B · T(0,0.55,0) · Rz(pitch)
Arm = H · T(0,1.1,0) · S(0.38,2.2,0.45)
Tip = H · T(0,2.2,0)
Probe = Tip · T(0,0.32,0) · S(0.72,0.65,0.72)
```

控制变量结果:

- yaw=0°、pitch=0°:肩部(0,-0.75,0),末端关节(0,1.45,0)。
- yaw=0°、pitch=30°:末端约(-1.1000,1.1553,0)。
- yaw=90°、pitch=30°:末端约(0,1.1553,1.1000)。
- 固定yaw只改pitch,基座绘制矩阵不变;改变yaw,子对象跟随。
- 探头X、Y局部尺度仍为0.72、0.65,未继承臂段非均匀缩放。
- 探头底部和臂端差约0.005,来自原框架偏移0.32与半高0.325的轻微装配重叠,保持连接。

### 原因、修复与结论

根因是缺少父矩阵继承。修复D1—D3,D4说明缩放仅出现在绘制矩阵,D5记录控制变量验证。保留框架的臂长与几何尺寸。采纳分离“关节位姿”和“部件绘制矩阵”的方法,避免把父部件拉长比例传给探头。

## 协作3:自主场景方案与核验(E)

### 目标及关键提示词

在现有设备与旋转样本台中加入有矩阵意义的功能变化,保留已有UI、暂停、速度、重置及PNG。仍承接本次真实请求。以下方案由Codex在实现时提出并取舍,不写成用户已经独立作出了这些判断。

### 两种方案与选择依据

方案一:改成行星—卫星系统。可以清楚体现自转、公转和父子坐标系,但要重新解释基座/肩部控件,并改动较多非TODO页面内容。

方案二:保留设备主题,增加沿X向往复的滑轨基座及臂端局部X轴摆扫关节。新增平移会被全部子对象继承,新增摆扫只改变末端工具姿态,既扩展原有结构和行为,又能把改动限制在E1/E3对应实现。

采用方案二,主题为“滑轨式摆扫定位装置”。这些变化不是仅增加颜色、标题或立方体数量。

### 主要矩阵链与交互规则

设t为累计动画时间,r(t)=0.4sin(0.8t),w(t)=30sin(1.6t)度:

```text
B = T(-2+r(t),-1.3,0) · Ry(yaw)
H = B · T(0,0.55,0) · Rz(pitch)
Arm = H · T(0,1.1,0) · S(0.38,2.2,0.45)
W = H · T(0,2.2,0) · Rx(w(t))
Probe = W · T(0,0.32,0) · S(0.73,0.65,0.73)
Specimen = T(2,-0.48,0) · Ry(65t) · S(0.7,0.78,0.7)
Marker = T(2,-0.48,0) · Ry(42t) · T(1.16,0.28,0) · S(0.22)
```

yaw和pitch两个参数可独立调整。原speed控件改变累计时间的速率,因此同时影响滑轨、摆扫、样本自转及标记公转;暂停时全部时间运动停止,手动关节控件仍可操作。新增操作说明通过E6写入原页面的提示节点,HTML文件本身不变。

### 两组参数状态的预期与实际对照

下表中的t=0由重置后冻结测试时钟获得,状态坐标通过绘制矩阵读取,单位为世界坐标。

| 参数 | 预期探头几何中心 | 实测探头几何中心 |
|---|---|---|
| t=0、yaw=0°、pitch=0° | (-2,1.77,0) | (-2,1.7700,0) |
| t=0、yaw=90°、pitch=30° | (-2,-0.75+2.52cos30°,2.52sin30°) | (-2,1.4324,1.2600) |

两状态基座几何中心均为(-2,-1.02,0),样本中心固定(2,-0.48,0),公转标记初始中心为(3.16,-0.20,0)。

另在yaw=pitch=0、t=1秒检查新增行为:

- 基座X坐标预期-2+0.4sin0.8≈-1.7131,实测约-1.7131。
- 探头几何中心约(-1.7131,1.7272,0.1599),局部X轴摆扫产生Z方向变化。
- 样本中心仍为(2,-0.48,0),但自身旋转矩阵改变。
- 标记中心约(2.8620,-0.20,-0.7762),符合半径1.16、绕样本中心42°的轨道。

### 动画与成果输出核验(Codex执行)

暂停后实际等待约2.1秒,全部模型矩阵保持不变。继续后只按当前小时间增量推进,无大跨度跳动。速度0使全部时间动画停止,速度2运行0.5秒的结果与速度1运行1秒一致。观察动画前后createBuffer计数不变,没有每帧新建几何Buffer。

点击原有PNG按钮完成下载,读取PNG头确认960×600且文件非空,再打开图像查看,背景、机械装置、样本台和标记均存在。截图与坐标数据放在evidence/,原始任务脚本和本次对照测试分开保存,不把测试观察代码加入正式实现。

### 结论与个人复核

已完成A—E的程序性TODO及概念说明;本次自动检查与图像核验由Codex执行。提交前本人应亲自打开index.html,复核矩阵次序、父子联动、两项新增功能、暂停/速度和PNG,并如实补充个人先验预测、实际理解和测试结论。本日志不声称本人已完成尚未发生的操作,也不声称已向邮箱或课程平台提交。