AI 协作日志

学生 Web 实验作品平台

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

# 实验二 AI协作记录

AI工具:Codex。
学号:202412211402016。

记录范围:本日志参考实验一的“目标、提示词、AI建议、判断、测试与结论”结构,整理本次真实对话及工具运行结果。本次由用户提供学生填充版并要求补全TODO,代码实现、浏览器自动测试与截图检查由Codex执行。下文的算法判断和测试结果均注明执行者,不将AI测试写成学生本人已经亲自完成的实验。

本次真实关键提示词(原文):

> 那你帮我做一份,完全按照要求,只修改todo内容,然后导出为文件夹,我自己解压

随后用户指定已经解压的实验2、实验3文件夹,并补充:

> 那么就用这两个地址来进行吧,我已解压完成

以下三个协作点均来自上述同一次补全请求,没有另行编造三段独立的咨询对话。用户在咨询前的个人预测和亲自运行后的理解尚未在对话中提供;如课程要求个人独立核验,应由本人运行后如实补充。

## AI协作1:Koch算法

### 我的目标
按实验说明补全线段三等分、向外等边三角形顶点、递归和连续顶点输出,不改动原有WebGL初始化与Shader。

### 提示词
使用上文所列真实补全请求;本次没有另行提出单独的Koch问题。

### AI关键回答与判断依据
初始三角形顶点逆时针排列,沿边行走时外侧位于右侧,因此把向量Q-P右转60°后加到P,得到向外凸出的R。计算为:

```javascript
const p=[a[0]+(b[0]-a[0])/3,a[1]+(b[1]-a[1])/3];
const q=[a[0]+2*(b[0]-a[0])/3,a[1]+2*(b[1]-a[1])/3];
const r=[p[0]+dx*c+dy*s,p[1]-dx*s+dy*c];
```

每条边按A→P、P→R、R→Q、Q→B递归。终止时只输出起点,使用LINE_LOOP连接末点与首点,顶点数等于线段数。每增加一级,每条线段变成四条,所以线段数为3×4^n。

### 验证方法与实际结果(Codex执行)
在本地Edge浏览器逐级调整Task B的Level,读取生成点数并检查全部坐标处于可见范围[-1,1]。

| Level | 预期与实测顶点数 |
|---:|---:|
| 0 | 3 |
| 1 | 12 |
| 2 | 48 |
| 3 | 192 |
| 4 | 768 |

五级数量与边界检查均通过,相关算法同时补入Task C和E。Task A的Level 1、4检查分别得到3、81个三角形;重置检查通过。

### 结论
采用右转60°和只输出递归起点的方案。保留原有Buffer上传和LINE_LOOP绘制结构,无需引入外部图形库。

## AI协作2:绘图板调试

### 现象
学生填充版Task D中的鼠标换算仍为占位实现,点击位置总被转换成(0,0)。这是未完成TODO导致的问题,不是本次新代码引入的故障。

### 初步排查与AI建议
Codex检查pointerToNDC,发现xCanvas、yCanvas固定取画布中心,函数直接返回[0,0]。排查顺序为:浏览器鼠标位置→Canvas相对坐标→内部像素→NDC与Y翻转,再检查跨事件firstPoint、对象数组与绘制图元。

### 提示词
沿用本次真实补全请求,没有虚构“我先发现了某个Bug”的单独提示词。

### 实际对照测试(Codex执行)
在临时测试页面加载原始Task D脚本,点击Canvas内部约(180,155)处,读取首个对象顶点为(0,0)。随后恢复完成版脚本并在相同位置点击,读得约(-0.499,+0.500)。由于Canvas边框及显示尺寸,坐标接近理论(-0.5,+0.5),容差内通过。

继续验证:保留已有点后创建矩形,对象数为2;矩形有四个不同角点。在线段第一次点击后切换工具,firstPoint恢复为null。清空后对象数为0、firstPoint为null。

### 最终原因、修改位置与结论
修改js/task-d.js中D1—D3的坐标换算、D4矩形角点、D6对象追加和D7清空状态。D5保存第一点的原始代码已正确,予以保留。坐标测试与状态切换均通过。

## AI协作3:主题整合

### 主题与预期效果
主题“绽放”,在Koch轮廓周围形成波浪花冠和12片菱形花瓣;点击移动花心并改变朝向。

### 提示词与方案比较
沿用本次补全请求。以下为Codex在本次实现中采用的设计取舍说明,未声称用户另行发出了“两种方案比较”的提示词。

方案一:保留模板中的普通圆环、中心放射线和节点。这种方案实现少,但仅沿用模板不足以满足自主新增或实质修改两种几何的要求。

方案二:把圆环改为半径随cos(12θ)变化的波浪闭合轮廓,把放射线改为B→L→T→R→B组成的12片菱形花瓣。沿用WebGL LINE_LOOP与LINES,几何规则清楚,修改范围限于E1/E2。

### 实际采用及新增交互
采用方案二;复用Koch生成、旋转动画与鼠标映射。在E3中除移动中心外,使用atan2计算点击方位角,使花冠改变朝向;E4切换动画。尺度滑块和层数控件保留原有功能。200字以内的设计说明在E1中填入页面原有说明框。

### 验证方法与结果(Codex执行)
截图查看初始画面,确认波浪花冠、菱形花瓣和Koch轮廓可辨识。点击后读取center和theta均发生变化,并保存交互前后截图。Task C运行、暂停、反向及手动设置90°检查通过。全部Task A—E未出现JavaScript未捕获异常。

## 核验材料与个人复核

evidence/包含Task A Level 1与4、Task E交互前后的截图及自动检查记录。截图和测试来自Codex本次运行。本人应再次打开index.html,亲自检查颜色、层数、暂停/反向、鼠标绘制和主题交互,并按真实情况补充自己的预测、理解及核验结论。