- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 NaN 的意思不是数字,但我不明白我是如何得到这个错误的。我正在做的是引用来 self 的形状类的我的形状对象的顶点值,并在我的渲染器类中使用它们。当我在 logcat 上打印出顶点的值时,我看到它返回前 5 个顶点,然后所有其他顶点都是 NaN。如果您查看我的 logcat,则表明在调用 matrix.multiplyMM() 之前,顶点 (vertex1) 打印良好。但是在调用之后,顶点(shapeverts)开始变成 NaN。
for (int i = 0; i < Shape.vertices.length; i += Shape.COORDS_PER_VERTEX) {//only checking one vertex
Log.i("vertex1", String.valueOf(Shape.vertices[i] + ", " + Shape.vertices[i+1] + ", " + Shape.vertices[i+2] + ", " + Shape.vertices[i+3]));
Matrix.multiplyMM(shapeVerts, 0, mvp, 0, Shape.vertices, 0);//vertices multiplied by model view projection matrix
Log.i("shapevertBf", String.valueOf(shapeVerts[i] + ", " + shapeVerts[i+1] + ", " + shapeVerts[i+2] + ", " + shapeVerts[i+3]));
shapeVerts[i] = shapeVerts[i] / shapeVerts[i + 3]; //clip.x divided by clip.w
shapeVerts[i + 1] = shapeVerts[i + 1] / shapeVerts[i + 3];//clip.y divided by clip.w
shapeVerts[i + 2] = shapeVerts[i + 2] / shapeVerts[i + 3];//clip.y divided by clip.w
Log.i("shapevertAf", String.valueOf(shapeVerts[i] + ", " + shapeVerts[i+1] + ", " + shapeVerts[i+2] + ", " + shapeVerts[i+3]));
日志猫
06-10 13:59:27.983 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 0.0, 0.0, 9.0, 1.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 19.5, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ 0.0, 0.0, 1.625, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 0.0, 0.0, 9.0, 1.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 19.5, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ 0.0, 0.0, 1.625, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 0.0, 0.0, 9.0, 1.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 19.5, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ 0.0, 0.0, 1.625, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 0.0, 0.0, 9.0, 1.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 19.5, 12.0
06-10 13:59:27.993 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ 0.0, 0.0, 1.625, 12.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 0.0, 0.0, 9.0, 1.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 0.0, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ NaN, NaN, NaN, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 5.290067, 0.0, 7.281153, 1.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 0.0, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ NaN, NaN, NaN, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/vertex1﹕ 1.634721, 5.031153, 7.281153, 1.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 0.0, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ NaN, NaN, NaN, 0.0
06-10 13:59:28.003 13121-13189/com.example.james.rollingsphere I/vertex1﹕ -4.279755, 3.109423, 7.281153, 1.0
06-10 13:59:28.013 13121-13189/com.example.james.rollingsphere I/shapevertBf﹕ 0.0, 0.0, 0.0, 0.0
06-10 13:59:28.013 13121-13189/com.example.james.rollingsphere I/shapevertAf﹕ NaN, NaN, NaN, 0.0
编辑我更新了代码和 logcat。有趣的是,w 分量在 Matrix.multiply 之后从 12 开始,但随后变为 0。
最佳答案
问题是在这种情况下使用 Matrix.multiplyMM
没有意义。 multiplyMM
用于将两个矩阵相乘以获得矩阵乘积,而您想要做的是将一个矩阵(模型 View 投影矩阵)乘以一个 vector (您在 Shape.js 中未转换的顶点)。 vertices
) 得到一个 vector (你在 shapeVerts
中转换的顶点)。
您只获得 5 个结果的原因是您将顶点数组视为一个 4x4 矩阵,而实际上它是一个顶点数组,每个顶点数组包含 3 个元素。一个 4x4 矩阵有 16 个元素,占用的空间与 5 1/3 顶点相同,因此您可以在到达未初始化数据并开始获取零(导致 NaN)等之前读出 5 个(无效)值。
要解决此问题,请使用 Matrix.multiplyMV将您的顶点坐标乘以模型 View 投影矩阵,将偏移量传递到正确的顶点,如下所示:
Matrix.multiplyMV(shapeVerts, i, mvp, 0, Shape.vertices, i);
关于java - matrix.multiply 返回 Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30756639/
以下函数作为本练习的介绍,说明了用加法定义的乘法。这是最简单的“容易写下来”的递归定义。 (define (star a b) (if (= b 0) 0 (+ a (st
不知道这个操作叫什么,谷歌也没有帮助。 假设我有两个像这样的简单数据框: df1 df1 factor1 1 a 2 b 3 c > df2 factor
我有这个 cobol 程序,用于计算阶乘: IDENTIFICATION DIVISION. PROGRAM-ID. Factorial-hopefully. AUTHOR. Dar
作为我正在学习的测试优先 ruby 类(class)的一部分,我需要制作一个基本的乘法方法,该方法首先采用 2 个参数并将它们相乘,但之后 rspec 测试将多个数字相乘的能力同样的方法。 我只想
题目地址:https://leetcode.com/problems/multiply-strings/description/ 题目描述 Given two non-negative integ
我正在尝试在 Java 中实现 np.multiply 并且我对它实际在做什么感到困惑。该文档只是说明它进行元素乘法。它与我能找到的任何数学矩阵乘积都不匹配。它部分匹配元素方式的 Hadamard 乘
这个问题在这里已经有了答案: Transpose / reshape dataframe without "timevar" from long to wide format (9 个回答) 关闭2年
我有一些复选框,选中后会更新底部的总价,它们效果很好。不过,我还添加了一个单独的输入字段来输入数量。我试图让该数量乘以输入字段的值。现在我只有将文本输入字段添加到总数中的代码,而不是将其乘以旁边的字段
我正在尝试在 MongoDB 中使用 $multiply 运算符。 第 1 步 db.message1064sd_00011_3744.aggregate([ {$project : {
我有两本字典,一本在代码主体中,一本在输入中。我想比较两个字典,如果键相同,我想相乘并打印值。下面是我迄今为止编写的代码。 dict_a = { 'r':100, 'y':110,
>>> a = [] >>> b = [a*2] >>> b [[]] >>> b = [copy.deepcopy(a)*2] >>> b [[]] 我正在尝试将 b 创建为由 a 的两个副本组成的
我在一个数据库中有几个 mysql 表。 目前我正在对我的网站进行整理测试,其中一个是测试一个沉重的数据库,看看这对性能(搜索)有多大影响。 该网站是一个分类网站。我需要很长时间才能一次插入一个分类以
我有一些代码要运行数千次,想知道什么更快。array 是一个包含 30 个值的短数组,它始终包含 0、1 或 2。 result = (array[29] * 68630377364883.0)
好的,所以我有这样的东西: SendKeys.send("blah" + "{BS}") 我想多次退格“{BS}”,例如有一个变量,我可以将“{BS}”乘以退格一定次数,我该怎么做? 我知道可以在 P
实现大整数乘法 使用整数数组来存储一个 biginteger 像 297897654 将存储为 {2,9,7,8,9,7,6,5,4} 实现 bigintegers 的乘法函数 例子:{2, 9, 8
这个问题在这里已经有了答案: Numpy np.multiply vs *-Operator [duplicate] (2 个回答) 3年前关闭。 numpy.multiply documentati
我正在尝试使用 Transform.multiply4x4() 移动表面修改器,但它似乎没有按预期工作。我试图旋转一个几乎平坦的表面,然后将其发送到远处。我的代码如下所示 myModif
我希望使用 SIMD 指令一次将寄存器中的所有 32 位整数相乘,这是我目前尝试的方法: int32_t a [8] = {1, 2, 3, 4, 5, 6, 7, 8}; int32_t b
尝试在 4 个表(项目、任务、支出和捐赠)上运行简单的内连接查询。连接似乎在某处缠结。例如,SUM(tasks.budget_amount) 应该给出 3,211,385.21 的组合值,但我得到的是
我知道 NaN 的意思不是数字,但我不明白我是如何得到这个错误的。我正在做的是引用来 self 的形状类的我的形状对象的顶点值,并在我的渲染器类中使用它们。当我在 logcat 上打印出顶点的值时,我
我是一名优秀的程序员,十分优秀!