AI 协作日志
学生 Web 实验作品平台
学号:202412211401018 · 来源:ai-log.md
# 实验二 AI协作记录(请据实际情况填写) ## AI协作1 · Koch算法 ### 我的目标与初步判断 理解Koch几何规则,理解如何控制旋转图形的凹凸,要让旋转方向来定图形的坐标 ### 关键提示词(原文) 如何确认旋转±60°的方向使凸起朝外 ### AI关键建议摘要 Koch 雪花的外凸方向,取决于初始三角形的绕行顺序和旋转符号是否匹配。 ### 我的测试方法与结果 在taskc里面验证,A(-0.82,-0.43) → B(0.82,-0.43) → C(0,0.99) → A画出来是 逆时针(因为底边从左到右,然后向上到顶点,再回到左下) ### 采纳情况及修正结论 采用顺时针旋转,即 rx = dx*c + dy*s; ry = -dx*s + dy*c;,Level 1 验证凸起朝外。 ## AI协作2 · 绘图板调试 ### 具体错误现象(如一次成功,可先人为注入并恢复一个小错误) 在 Task D 中,我人为注入了一个错误:在 pointerToNDC 中暂时取消 Y 轴翻转,把: const yNDC = 1 - 2 * yCanvas / canvas.height; 改成:const yNDC = 2 * yCanvas / canvas.height - 1;出现了颠倒。 ### 我的初步排查 我先检查了 getBoundingClientRect() 和 Canvas 像素尺寸,确认 xCanvas、yCanvas 计算正确; 然后对比课堂公式,发现只有 Y 轴翻转这一步被改动了。初步判断问题就出在 yNDC 的符号上。 ### 关键提示词(原文) 我的 WebGL 绘图板点击位置 Y 轴方向反了,点击左上角点出现在左下角。 Y 轴翻转公式是 yNDC = 2 * yCanvas / canvas.height - 1。 请问可能是什么原因,应该怎么验证 ### AI建议与逐项测试 AI 建议: 检查 Canvas 像素坐标与 NDC 的 Y 轴方向差异; 用 clientY - rect.top 得到从上往下的像素 y; NDC 的 y 向上为正,所以应使用 1 - 2*yCanvas/canvas.height; 建议在点击事件里打印 clientY、yCanvas、yNDC 三个值对比。 我按建议逐项测试: 打印 clientY 与 yCanvas,确认 yCanvas 是从上往下增加; 代入左上角 yCanvas=0,错误公式得 -1,正确公式得 1; 代入右下角 yCanvas=canvas.height,错误公式得 1,正确公式得 -1; 恢复 1 - 2*yCanvas/canvas.height 后,四角点击位置全部正确。 ### 最终原因及修复证据 原因是 NDC 的 Y 轴向上为正,而 Canvas 像素坐标从上往下增加,必须做 1 - 2*yCanvas/canvas.height 翻转。 恢复后,在 Canvas 四角附近创建点,位置全部正确,窗口缩放后点击中心也准确 ## AI协作3 · 主题整合 ### 主题及预期效果 绽放 预期效果:以 Koch 雪花为中心结构,外环表示秩序边界,放射线与节点表示向外连接,新增参数化星形线表示绽放轨迹。 整体可旋转、可缩放、可移动中心。 ### 两个方案的AI提示词(原文) 我想在 WebGL 中用基本图元做一个主题为“绽放”的交互作品,复用 Koch 雪花和旋转动画。 请给我两个方案,比较图元数量、交互难度和可解释性。 ### 方案比较、取舍理由 ### AI 提出两个方案: 方案一:参数化玫瑰线 图元:LINE_STRIP,约 720 个顶点; 交互:两个滑块分别控制花瓣数和振幅; 可解释性:公式 r = A·cos(kθ) 直观,但需要新增两个 HTML 控件。 方案二:参数化星形线 图元:LINE_STRIP,约 72~168 个顶点; 交互:复用已有的 level 和 scale 作为两个参数; 可解释性:公式 x=A·cos³(t), y=A·sin³(t) 简单,不加新控件。 我选择方案二,理由: 不增加 HTML 控件,改动最小; 复用已有 level 和 scale,两个参数都有效; 顶点数少,性能边界清楚; 图形明显,能看出“绽放”轨迹。 拒绝方案一的理由:需要新增两个滑块,改动较大,且玫瑰线与 Koch 的视觉区分不如星形线明显 ### 实际实现、测试与结果 在 task-e.js 中新增 makeAstroid(A, n) 函数,在 render() 中绘制: javascript const astroid = makeAstroid(0.95, 72 + level * 24); drawShape(astroid, gl.LINE_STRIP, [0.85, 0.35, 0.55, 1], theta, scale);结果正常。 ## 其他AI使用(若有) 工具、提示词及关键修改记录。