AI 协作日志
学生 Web 实验作品平台
学号:202412211401012 · 来源:ai-log.md
# 实验三 AI协作与核验记录 AI工具:豆包 ## 协作1:矩阵与变换次序 - 我的目标和预先预测: 正方形中心C(0.5,0.25);R·T:先平移到C,再绕世界原点旋转,图形绕原点公转;T·R先旋转再平移,图形在C点原地自转。两者画面效果完全不同。 - 关键提示词(原文):webgl gl‑matrix mat4 列向量,R乘T和T乘R矩阵顺序,公转自转区别 - AI建议摘要:mat4.multiply(out,A,B) 结果=A*B,列向量,B先执行;R*T代表先T平移,再R旋转;T*R代表先R旋转,再T平移。 - 我的计算或测试方法:task‑b页面,pivot切换world/self,观察正方形轨迹;运行矩阵测试面板看5项数值。 - 实际结果与证据:world模式图形绕原点公转;self模式原地自转;矩阵测试全部✓。 - 采纳、拒绝或修正的结论:采纳;确认gl‑matrix multiply(A,B) = A*B,列向量右侧矩阵先执行。 ## 协作2:故障诊断与修复 - 错误现象、触发步骤:动画暂停一段时间,恢复之后图形瞬间跳很远。 - 我先检查了什么:tick函数dt计算,lastMs赋值,running标志。 - 关键提示词(原文)requestAnimationFrame暂停恢复画面跳变,dt时间增量处理,webgl动画 - AI列出的候选原因:暂停时依然计算dt;后台休眠ms差值过大;多份rAF循环。 - 我逐项测试的结果:原来暂停状态仍然计算dt;修改为if(running)才计算dt;同时限制dt最大0.1秒防止切后台跳跃。 - 真正原因、修改位置和复测结论:tick函数,只有running=true才计算dt;dt上限0.1;修改app.js tick;复测:暂停5秒恢复,图形不会瞬间跳跃。 ## 协作3:方案比较与实现核验 - 待解决的具体设计问题:WebGL Canvas保存PNG截图实现,两种方案。 - 关键提示词(原文)webgl2 canvas toBlob 空白截图 preserveDrawingBuffer,两种截图写法对比 - 两种方案及取舍依据: 方案1:直接调用canvas.toBlob;风险:WebGL缓冲可能被清除,得到黑色空白图;需要preserveDrawingBuffer并且截图前主动draw()重绘。 方案2:readPixels读取像素,再生成image;代码长,需要处理像素翻转。 取舍:本项目已经开启preserveDrawingBuffer,优先方案1,简单性能好;必须截图前执行this.draw()刷新帧。 - 我最终采用的实现:savePNG中先调用this.draw(),再toBlob,创建临时a标签下载,用完释放URL。 - 测试与反思:截图出来包含背景色和全部图形;如果不执行draw,切换页面回来截图会黑屏。 ## 其他使用AI的记录(如有) - 工具、原始关键提示词、处理说明和验证:实现三角波triangle01,输入t输出0‑1‑0往复,自测t=0/0.25/0.5/0.75/1输出0,0.5,1,0.5,0,运行task‑c圆缩放正常。