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使用(若有) 无。