AI 协作日志

学生 Web 实验作品平台

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

# 实验二 AI协作记录
## AI协作1 · Koch算法
### 我的目标与初步判断
目标:实现Koch雪花线段细分,搞清楚向外60°旋转的计算;一开始误以为旋转‑60,图形向内凹陷。
初步判断:线段PQ向量旋转60度得到PR,要保证逆时针原始三角形,旋转角度符号决定凹凸。
### 关键提示词(原文)
> WebGL2 Koch雪花,线段AB三等分得到P Q,向量PQ旋转多少度向外凸起,初始三角形顶点逆时针,2D旋转矩阵js实现。
### AI关键建议摘要
逆时针绕行轮廓,向量PQ使用+60°旋转;旋转矩阵`[cosθ,‑sinθ; sinθ,cosθ]`,以P点作为旋转基点;递归把A‑P,P‑R,R‑Q,Q‑B四段继续细分。
### 我的测试方法与结果
测试Level0输出原始三角形;Level1观察雪花凸起方向;打印顶点坐标,对比预期线段数3*4^n;使用+60后图形向外,‑60向内。
### 采纳情况及修正结论
采纳+60°旋转实现向外凸起;修正初始错误‑60;递归调用顺序A‑P,P‑R,R‑Q,Q‑B,输出顶点数组,`LINE_LOOP`绘制闭合雪花。

## AI协作2 · 绘图板调试
### 具体错误现象
鼠标点击绘制点位置偏移严重,y轴颠倒,点击画布上方图形跑到下方。(人为制造bug:注释掉NDC里y翻转代码)
### 我的初步排查
怀疑`getBoundingClientRect`坐标,怀疑canvas CSS像素与buffer像素不一致,怀疑NDC转换Y轴方向。
### 关键提示词(原文)
> WebGL2 canvas鼠标点击转NDC,clientX clientY,getBoundingClientRect,Y轴翻转,为什么点击y颠倒。
### AI建议与逐项测试
1. 区分canvas显示大小与canvas.width/height绘图像素。
2. `xCanvas = (clientX‑rect.left)*canvas.width / rect.width`映射绘图像素。
3. NDC Y轴:`yNDC = 1‑2*yCanvas/canvas.height`翻转。恢复翻转代码。
### 最终原因及修复证据
缺少Y轴翻转,WebGL NDC y向上,浏览器DOM y向下;补全yNDC翻转,点击四角位置绘制图形位置完全匹配。

## AI协作3 · 主题整合
### 主题及预期效果
主题:绽放。复用Koch雪花,增加2个以上新增几何,两种交互;交互1:滑块调整层数、缩放;交互2:点击画布移动图案中心;交互3:按钮启停旋转动画。
### 两个方案的AI提示词(原文)
>方案1提示词:WebGL2绽放主题,koch雪花,新增圆环+放射线段,鼠标点击修改图案偏移中心,rAF旋转;全部使用drawShape封装绘制函数。
>方案2提示词:绽放主题,粒子随机散点,大量随机生成点,每帧更新粒子位置做流动效果。
### 方案比较、取舍理由
方案1:几何可控,代码量适中,可解释,复用B任务Koch,满足实验要求两个新增几何;
方案2:大量随机粒子,性能开销大,没有复用koch算法,不符合实验“复用已有任务能力”的硬性要求,舍弃。
### 实际实现、测试与结果
选用方案1,新增圆环、放射线段、外圈节点;实现:滑块调整层数缩放、点击画布移动图案中心、按钮启停旋转;测试:修改level雪花细分变化,点击任意位置图案跟随,旋转启停生效,完成主题作品。

## 其他AI使用(若有)
无。