AI 协作日志

学生 Web 实验作品平台

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

# 实验二 AI协作记录


## 1. Task B:Koch算法

**我要搞清楚的事**:凸起到底朝里还是朝外,还有为什么第 3 层是 192 段。

**我问 AI 的话**:
> Koch 雪花一条边 A→B 怎么用三等分点和等边三角形算出向外凸的顶点 R?为什么递归到第 3 层线段数是 192?

**AI 说的要点**:
- 三等分点 P、Q 算出来后,以 PQ 为底往外做等边三角形,顶点 R = P + rotate(Q-P, -60°),也就是右转 60°。
- 逆时针多边形沿着边走里面在左边,所以"往外"就是往右转,-60° 才对;可以先用一条水平线试突起方向。
- 每段线变成 4 段,所以第 n 层是 3×4^n;第 3 层 = 3×64 = 192。

**我自己的判断**:我也觉得跟三角形绕的方向有关,逆时针应该右转,但符号老拿不准;段数逐层 ×4 感觉对,想亲眼确认。

**我做的验证**:打开 task-b.html,把 Level 从 0 拉到 4,记页面显示的线段数,顺手看凸起是不是都朝外。结果线段数是 3、12、48、192、768,每个凸起都朝轮廓外面,没有往里凹的。

**结论**:3×4^n 和 -60° 右转都对。代码里用的就是 -60°,跑出来全朝外,说明符号没错;之前我对旋转符号那点模糊认识,这次算搞清楚了。

## 2. Task D:交互绘图调试

**现象**:做 Task D 时,点下去的位置和画出来的对不上,矩形方向也怪,还有两次点击的状态串了。


**我问 AI 的话**:
> WebGL 绘图板点击位置偏移,矩形方向错乱,两次点击状态混乱。请列最可能原因和验证步骤,不要重写程序。

**AI 给的排查清单**:
1. 没用 getBoundingClientRect 直接用 clientX/Y → 加 rect 后偏移没了;
2. Y 轴没翻转 → 去掉翻转,顶部点的却画到底部,翻回来就正常;
3. 切换工具没清 firstPoint → 线段第一次点完切矩形,旧的第一点被复用画错,在 tool 切换里加 firstPoint=null 解决。

**我做的测试**:
- 四角点"点"工具,位置都对,尤其顶部点在上、底部点在下,Y 方向没问题;
- 我按建议故意把 Y 翻转那行注释掉,顶部点真的跑到底下去了,加回来就正常(这一步是人为制造错误再还原,还原后是对的);
- 线段点完第一次切到矩形,旧的 firstPoint 被清空、没被复用,矩形位置正常;
- 点"清空",旧图形全没了。

**最终原因 & 是否采纳**:根因就是 Y 轴翻转和跨事件状态清理。AI 的建议我都采纳了,一步步试下来全吻合,程序修好了。

## 3. Task E:主题化整合

**主题与预期效果**:我的主题是"绽放",视觉上想表达从中心向外一层层展开、像花开放的感觉。

**我问 AI 的话**:
> 用基本 WebGL 图元表达"绽放"主题,给两种方案并比较图元数量、交互难度和可解释性。

**AI 给的两个方向**:
- 方案A:Koch 中心图案 + 旋转动画 + 外环 + 放射线/节点,交互用滚轮缩放、放射线数量滑块、点击切换呼吸、旋转控制;
- 方案B:纯多层同心圆 + 旋转,图元最少但没复用算法图案。

**我的取舍**:选了 A。它复用 Task B 的算法和 Task C 的动画,几何上多了外环、放射线+端点两类

**我做的验证(打开 task-e.html)**:
- 滚轮滚,图案整体放大缩小,好使;
- 拖"放射线数量"滑块,放射线和端点数量跟着变;
- 点一下画布,整体开始"呼吸"式缩放(绽放/收缩),再点关掉;
- "开始/暂停旋转""反向""旋转速度"都能正常控制转动;
- 拖 Koch 层数,雪花会重建;


**结论**:作品跑起来跟我设计的一致
---