AI 协作日志
学生 Web 实验作品平台
学号:202412211402015 · 来源:ai-log.md
# 实验三 AI协作记录(请学生在实际完成实验后填写)
> 教师参考代码包不包含虚构的AI协作过程。学生提交时需填写真实工具、提示词、独立测试与结论。
## AI协作1:矩阵和变换次序
- 我自己的预测:以自己为中心旋转和以画板中心旋转矩阵的乘法顺序应该是不一样的。
- AI工具与原始提示词:AI用的是deepseek,提示词是源代码。
- AI的建议:
if (pivot === 'self') {
// 自转:先把原点平移到中心,再旋转,最后平移到目标位置(如果 T 已经包含了中心位置)
// 通常次序是: T * R
mat = X.multiply(X.T(cx, cy), X.R(axis, angle));
} else {
// 公转:先绕原点旋转,再平移到中心位置
// 通常次序是: R * T
mat = X.multiply(X.R(axis, angle), X.T(cx, cy));
}
- 本人计算、运行与证据:在网页测试代码,是能正常完成需求,说明是对的。
- 采纳或修正结论:采纳AI的代码和建议。
## AI协作2:实际故障排查
- 错误现象与重现步骤:任务一的画板突然变成黑屏了。
- 我先检查了什么:说实话我不知道该检查什么,我有点疑惑,甚至有点慌。但是我看到网页里在画板的下面有一串小字,感觉是提示了错误的来源。
- AI工具与原始提示词:AI用的是deepseek,原始提示词太多了,我是直接把代码发给他的。
- AI建议的候选原因与测试:AI说了很多话,但是有一段话引起了我的注意:
问题出在 this.nextId++ 和 this.objects.push(o)!
这说明,在调用 create 之前,必须要有两个前置条件:
this.nextId 必须已经被初始化为一个数字(比如 0 或 1)。
this.objects 必须已经被初始化为一个空数组 []。
如果你在调用 this.create() 之前,this.objects 还是 undefined,那么 this.objects.push(o) 就会报错;或者底层的 X.createObject 在计算坐标时,因为 nextId 是 undefined 导致了一系列连锁崩溃。
这段话给了我一个很重要的线索,就是this.objects 必须是一个空数组。
- 实测结果、修复与复测:在之前的代码中,我是在objects里把输出的情况都写了,而且在ai协助写代码的时候ai也没指出这个问题,所以最后我把objects里的内容清空了之后画板就正常了。
## AI协作3:设计方案比较
- 我考虑的两种实现:没有遇到这种情况,大部分都是照实验里的提示完成代码,没有遇到需要设计的情况。
- AI工具与原始提示词:
- 对比、取舍与原因:
- 实际实现及核验: