如何解决在处理中转置数组列表
我正在尝试在 processing.js 中编写一个函数,该函数将一个数组列表作为输入,其中包含 4 个类 int[]
列表,每个列表包含 4 个元素。这就是我表示矩阵的方式,数组列表中的每个列表代表一行。数组列表的索引 0 是顶行,数组的索引 3 将其列在底行。我想编写一个函数来转置这个数组列表,但我遇到了一个障碍。到目前为止,这是我的代码(注意:Z 是一个 4x4 的数组列表,其中填充了零):
ArrayList<int[]> Transpose(ArrayList<int[]> M){
ArrayList<int[]> A=Z;
for (int q=0; q<4; q++){
int[] atemp={};
for (int p=0; p<4; p++){
int[] mtemp=M.get(p);
int i=mtemp[q];
append(atemp,i);
}
A.add(atemp);
}
return A;
}
当我尝试将 i
附加到 atemp
时,我的问题似乎发生了。当我在将 atemp.length
添加到 A
之前打印出它时,它打印的长度为 0。我不知道为什么 atemp 仍然是空的,我想知道是否有人可以帮助我理解什么正在发生以及如何解决它。
解决方法
我不是 JavaScript 专家(你用 Java 标记了这个问题,这就是我看的原因)但我认为你应该在 JS 中创建一个这样的数组:
int[] atemp = [];
使用花括号,您可能正在创建一个对象?
,您已经发现您需要将 Card
分配为新的 name
,而不是简单地对现有的再次引用。
此外,如果您只需要在 Processing.js 中使用 4x4 转换矩阵,请使用已经实现了 A
的 ArrayList
类:
PMatrix3D
应该输出:
transpose()
(您可以使用 PMatrix3D A = new PMatrix3D();
// modify A as a test
A.translate(10,20,30);
println("A:");
A.print();
// clone A
PMatrix3D Z = A.get();
Z.transpose();
println("Z:");
Z.print();
将转换应用到渲染器)。
请注意,ProcessingJS 已不再维护。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。