Tag: 矩阵

打印ax,y矩阵,java

我想使用for循环打印followin矩阵: 1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5 我用: public static void main ( String [ ] args ) { for(int w = 1; w <= […]

如何获得由公共数据包围的矩阵位置?

我在Java中有一个定义的矩阵 int[][] a={ {0,0,0,0,0,0}, {0,0,0,1,0,0}, {0,1,1,0,1,0}, {1,0,0,0,0,1}, {0,1,0,1,0,1}, {0,0,1,0,1,0} }; 所以我想知道矩阵上的哪些位置被“1”值组成的线包围,即值为“0”的位置组,好像“1”是不规则图形的周长,并且“在其周边区域内的0“值(在这种情况下:a [2] [3],a [3] [1],a [3] [2],a [3] [3],a [3] [ 4],a [4] [2]和[4] [4])。 我怎样才能自动获得这些职位?

矩阵操作:逻辑无法获取更高阶NXN矩阵数据的正确答案

我遇到了与Matrix Manipulation相关的问题。 问题陈述 有一个NxN矩阵,分为N * N个单元。 每个单元格都有一个预定义值。 哪个将作为输入。 迭代必须发生K次,这也在测试输入中给出。 我们必须确保在每次迭代时选择行/列的最佳/最小值。 最终输出是每次迭代结束时保存的最佳值的累积和。 步骤1.总结单个行和列,找到行和列的最小总和(它可以是行或列,只需要最小行或列) 步骤2.分别存储上面找到的总和 第3步。增加min的元素。 总和行或列。 由1 从1到Kth值重复步骤1,2,3 add the sum at each iteration(specified in step2) 输出是在第K次迭代上获得的总和。 样本数据 2 4 1 3 2 4 输出数据 22 我能够编写一个代码(在java中)并对一些示例测试用例进行了相同的测试。 输出工作正常。 该代码适用于较低阶的样本数据矩阵,例如2×2,4×4,甚至直到44×40(迭代次数较少)。 但是,当矩阵大小增加到100X100(复杂迭代)时,我看到预期的输出输出值在实际输出及其随机的10s和数百位数处不同。 因为我无法找到输出与输入的正确模式。 现在,真正调试第500个循环来识别问题对我造成了影响。 有没有更好的方法或方法来解决与巨大的矩阵操作相关的问题。 有没有人遇到类似的问题并解决了它。 我主要想知道解决给定矩阵问题的正确方法。 在java中使用什么数据结构。 目前,我使用原始DS和数组int []或long []来解决这个问题。 感谢这方面的任何帮助。

缩放数组(矩阵)

这个程序的目的是创建一个比原始数组放大10倍的更大字节数组。 例如,[0] [0]中的1应该是新数组中1x的10×10平方。 我提供了代码和输出,它似乎在较大数组的填充期间正常工作,但随后打印不同的值。 我目前正在试验这些行,以便限制我在测试期间处理的变量数量。 任何人都可以想到这种情况发生的原因吗? public class Test { static byte[][] byteArray = {{1, 0}, {0, 1}}; public static void main(String[] args) { byte newarray[][] = converter(); for(int i = 0; i < 20; i++) { System.out.println(newarray[i][0]); } } private static byte[][] converter() { byte[][] b = new byte[20][20]; for(int r = 0; r […]

Java Tetris轮换

我知道这已被问了很多,但我想知道如何旋转俄罗斯方块片? 我已经做了一个漫长而糟糕的解决方案(约170行代码),但应该有更简单的方法。 我的俄罗斯方块由4个块组成,这些块都知道它们在矩阵中的位置(行和列)。 矩阵本身是字符型的,因此4个字块都是字母。 它看起来像这样: …… ..T… .TTT.. …… 我试图通过计算中间行和列并将其用作原点来模拟我的矩阵作为坐标系,然后尝试应用我发现的这个简单算法:90度旋转(x,y)=( – y,x) 它似乎只有在我的作品位于矩阵的中心时才有效。 我不知道我应该做什么,我一整天都在想这个。 这是我的方法: public void rotatePiece(ArrayList random) { int distance = 0; // how far is the origo for (int i=0; i < 4; ++i) board[random.get(i).getRow()][random.get(i).getColumn()] = '.'; // erases the current location of the piece for (int i=0; i < 4; ++i) […]

cpu的矩阵访问和乘法优化

我在java中制作了一些内在优化的矩阵包装器(在JNI的帮助下)。 需要对此进行肯定, 您能否给出关于矩阵优化的一些提示? 我要实现的是: Matrix可以表示为四组缓冲区/数组,一组用于水平访问,一组用于垂直访问,一组用于对角访问,命令缓冲区仅在需要时计算矩阵元素。 这是一个例子。 Matrix signature: 0 1 2 3 4 5 6 7 8 9 1 3 3 5 2 9 First(hroizontal) set: horSet[0]={0,1,2,3} horSet[1]={4,5,6,7} horSet[2]={8,9,1,3} horSet[3]={3,5,2,9} Second(vertical) set: verSet[0]={0,4,8,3} verSet[1]={1,5,9,5} verSet[2]={2,6,1,2} verSet[3]={3,7,3,9} Third(optional) a diagonal set: diagS={0,5,1,9} //just in case some calculation needs this Fourth(calcuation list, in a “one calculation one […]

Android OpenGLES 2从触摸坐标中拾取光线,取消计算略微偏离计算

我试图通过交叉射线测试实现基于触摸坐标的对象拾取。 我无法找到有关将触摸坐标转换为世界中使用的坐标系以构建此光线的信息。 到目前为止,我的理解是应用于场景中每个顶点的矩阵是: projectionMatrix * viewMatrix * modelMatrix 这是我的过程,用于反转该过程,试图在场景中找到光线的端点以及我的绘图循环,以防我只是错误地应用不同的矩阵: public float[] getMouseRayProjection(float touchX, float touchY, float windowWidth, float windowHeight, float[] modelView, float[] projection) { float[] rayDirection = new float[4]; float normalizedX = 2 * touchX/windowWidth – 1; float normalizedY = 1 – 2*touchY/windowHeight; float[] unviewMatrix = new float[16]; float[] viewMatrix = new float[16]; Matrix.multiplyMM(viewMatrix, 0, […]

OpenCV Mat处理时间

我想知道OpenCV函数的src(source)和dst(destination)是否有不同的变量会对处理时间产生影响。 我在下面有两个函数可以做同样的事情。 public static Mat getY(Mat m){ Mat mMattemp = new Mat(); Imgproc.cvtColor(m,mMattemp,Imgproc.COLOR_YUV420sp2RGB); Imgproc.cvtColor(mMattemp,mMattemp, Imgproc.COLOR_RGB2HSV); Core.inRange(mMattemp, new Scalar(20, 100, 100), new Scalar(30, 255, 255), mMattemp); return mMattemp; } 与 public static Mat getY(Mat m){ Mat mMattemp_rgb = new Mat(); Mat mMattemp_hsv = new Mat(); Mat mMattemp_ir = new Mat(); Imgproc.cvtColor(m,mMattemp_rgb,Imgproc.COLOR_YUV420sp2RGB); Imgproc.cvtColor(mMattemp_rgb,mMattemp_hsv, Imgproc.COLOR_RGB2HSV); Core.inRange(mMattemp_hsv, new Scalar(20, […]

canvas矩阵变换

我正在开发一款Android游戏。 我添加了按钮,允许用户在x轴上导航相机并放大和缩小。 为此,我使用以下矩阵代码: // c is the canvas.. Matrix m = c.getMatrix(); // Make sure that the ground is always at the bottom of the screen m.setScale(zoom,zoom,0.0f,height); m.preTranslate(camera_x, 0); // Change offset in x-direction c.setMatrix(m); 这适用于模拟器,但在我的真实设备上给了我一些奇怪的结果。 谁能告诉我它有什么问题? 我发现使用矩阵很棘手,特别是因为Matrix对象有许多选项(pre,post和set)。 谢谢

Libgdx旋转ModelInstance

我正在开发我的第一个libgdx 3D游戏。 到目前为止,我可以在迷宫般的(硬编码)世界中移动,碰撞检测工作。 我也有一些工作A *寻路的敌人。 我还使用FBX-Conv来获取.g3db文件,这是我的第一个(相当难看的)Blender模型。 由于某种原因,模特在地板上而不是站立。 当我将它导出为.fbx时,我可能有一些错误的设置。 为此我尝试rotate()他在z-Axis modelInstance.transform.rotate(Vector3.Z, 90) rotate() 90度,在我的Screen的show()方法中调用: modelInstance.transform.rotate(Vector3.Z, 90) ,加载Model并实例化我的ModelInstance (在给定的位置)。 由于某种原因,它没有旋转。 然后我将rotate方法放在render(delta) ,认为它现在每个渲染循环旋转90度。 但它反而停滞不前,就像它应该的那样。 好的,但是现在我希望modelInstance rotate到它实际看起来的位置,这意味着它应该旋转,这取决于我的enemie的Vector3 direction 。 我已经准备好使用modelInstance.transform.setTotranslation(enemie.getPosition())来完善自己的位置。 所以我想我也可以使用modelInstance.transform.setToRotation(Vector3 v1, Vector3 vs) ,其中v1 = enemie.getPosition()和v2 = enemie.getPosition().add(enemie.getDirection) 。 请注意, position Vector不会直接使用,因为它会在add()方法中更改其值。 这样做,我不再看到对象,这意味着它的位置也是错误的。 为什么会这样? 我如何通过使用direction向量来旋转我的modelInstance ? 非常感谢。