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,并如实补充个人先验预测、实际理解和测试结论。本日志不声称本人已完成尚未发生的操作,也不声称已向邮箱或课程平台提交。