我有一个
,其旋转66度,-webkit-transform(rotate66)>.当我执行调整大小,宽度或高度时,DIV似乎会改变他的顶部/左坐标.实际的left/top CSS礼节并没有改变.我认为转换矩阵中有问题. 有什么方法可以使旋转的
在width/height上"保持静止"?在调整大小上应该是左和最高的道具来对抗这一运动,但我似乎找不到正确的比例. 您可以在此处看到测试(仅WebKit): http://jsbin.com/iqezoj/4/4/编辑 谢谢 解决方案 您还需要指定-webkit-transform-origin以及控制转换的起源. Mozilla Documentation 在这个主题上都很好. 编辑 -webkit-transform-origin: 100px 50px;在示例中将点移到
的中间.默认值为50% 50%,它将根据
的高度和宽度进行更改,这解释了位置在转移的原因.
以下是关于 matrix 的编程技术问答
我已经在3D空间中旋转并翻译了一个立方体元素. 我想在给定时间找到此转换的旋转部分.这可能吗? 我有: var cube = document.getElementById("cube"); var transform = getComputedStyle(cube).webkitTransform; //the value of transform is: // matrix3d(-1, 0, 0.00000000000000012246467991473532, 0, // 0, 1, 0, 0, // -0.00000000000000012246467991473532, 0, -1, 0, // 0, 0, 0, 1) 帮助吗? : - ) 解决方案 如果您的对象仅旋转y左右,则是的,旋转很容易计算 - 它是您的翻译将只是输出矩阵的底部行,在这种情况下为0,0,0. 请参见示例
我有一个照明问题,其中一些三角形似乎表现出较差的阴影伪影,其中阴影在整个多边形的整个表面上都不光滑(例如,墙壁).也就是说,构成多边形的每个三角形似乎都比邻居稍暗. 我正在尝试实现简单的定向照明.这是它的样子: 这是顶点着色器代码: gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition.xyz, 1.0); vNormal = vec3(uNMatrix * vec4(aVertexNormal.xyz, 1.0)); vColor = aVertexMaterialColor; 这是片段着色器代码: vec3 light = normalize(vec3( 0.5, 0.2, 1.0)); float amount = max(dot(vNormal, light), 0.0); vec4 finalColor = vColor; finalColor.rgb *= a
从这里开始: webggl 3d perspective 我是triyng实现了反对效果,没有魔法. 我正在即时计算对象空间中的面部正常.之后,我将fudgeFactor内部设置为 m [2] [3] 以获取视角除以z .. 要检查剪切矩阵是否有效,我使用直接从WebGL顶点着色器中投射出的顶点位置扩展了片段,并添加了"投影位置" flag. flag. 现在,我正在使用转换的正态内部使用z组件来用normal.z fudgeFactor为0 时,此技术效果很好.为什么这也不适用于视角投影,当我自己设置fudgeFactor时? To see what's happen, I wrote the minimal example below to visualize the normal vectors (thanks to: geeks3d )并对其进行着色. green 正常:可见脸, red 正常:脸部被剔除. 我遵循了 gman 的提示,并实现了基本的Po
我的质地为800x600.如何在另一个大小的WebGL 上将其扩展并保持原始长宽比?假设绘图缓冲区和画布具有相同的尺寸. 解决方案 给定WebGL仅关心夹层坐标. 换句话说 const canvasAspect = canvas.clientWidth / canvas.clientHeight; const imageAspect = image.width / image.height; let scaleY = 1; let scaleX = imageAspect / canvasAspect; 请注意,您需要决定如何适应图像. scaleY= 1意味着图像始终将垂直和水平拟合,只是任何出现的东西. 如果您希望它水平适合,则需要使Scalex = 1 let scaleX = 1; let scaleY = canvasAspect / imageAspect; 如果您希望它contain然后
我试图在顶点着色器内旋转2D图像的矩阵. 我希望2D图像围绕我认为是Z轴的旋转. 但是,我曾经收到的关闭是: 这是我的着色器内部的矩阵,我在: 上使用翻译和缩放: mat4 worldPosTrans = mat4(vec4(scale.x * cos(rotateZ), 0, 0, 0), vec4(0, scale.y, 0, 0), vec4(0, 0, scale.z, 0), vec4(translation, 1)); 这是一个略微更改的版本,该版本本应旋转所有内容: mat4 worldPosTrans = mat4(vec4(scale.x * cos(rotateZ), -sin(rotateZ), 0, 0), vec4(sin
当我阅读有关WebGL的书时,我已经看到了下一个矩阵描述: 书中有关于最后一行的信息( webgl初学者指南初学者指南迭戈·康托尔,布兰登·琼斯): 神秘的第四排第四排没有任何特别 意义.元素M4,M8,M12始终为零.元素M 16( 均匀的坐标始终为1. 所以,如果最后一行总是[ 0, 0, 0, 1 ],我不明白下一个: 为什么必须严格[ 0, 0, 0, 1 ],为什么不全部 值是0甚至其他值? 但是,如果要查看glMatrix javascript库的源代码,则恰好是mat4 https://github.com/toji/gl-matrix/blob/master/master/src/src/gl-matrix/matrix/mat4.js /p> 您可以看到下一个: /** * Translate a mat4 by the given vector not using SIMD * * @param {mat4} out the
WebGL的所有矩阵库都有某种perspective函数,您可以使用这些函数来获取场景的透视矩阵. 例如, mat4.js gl-matrix 的一部分的文件是这样编码的: mat4.perspective = function (out, fovy, aspect, near, far) { var f = 1.0 / Math.tan(fovy / 2), nf = 1 / (near - far); out[0] = f / aspect; out[1] = 0; out[2] = 0; out[3] = 0; out[4] = 0; out[5] = f; out[6] = 0; out[7] = 0; out[8] = 0; out[9] = 0; out[10] = (far + near) * nf; out[11] = -1; out[1
在比较这些不同类型时,我能想到一个类比吗? 如何工作? 另外,统一矩阵的含义是什么? 解决方案 直接从 http://www.lighthouse-com/教程/glsl-tutorial/data-types and-variables/.实际网站有更详细的信息,值得退房. 可变限定器 预选赛给变量具有特殊的含义.下列 可以使用预选赛: const - 声明是一个编译时间常数. 属性 - 可能会更改每个顶点的全局变量,这些变量从OpenGL应用程序传递到顶点着色器.这个预选赛 只能在顶点着色器中使用.对于着色器,这是一个 只读变量.请参阅属性部分. 统一 - 可能会从OpenGL传递的每个原始[...]的全局变量 应用于着色器.此预选赛可以在两个顶点中使用 和碎片着色器.对于着色器,这是一个仅读取变量. 参见统一部分. 变化 - 用于顶点着色器和片段着色器之间的插值数据.可在顶点着色器中写作,并且 仅在片段着色器中读取.请参阅各个部分. 对
您在上面的屏幕截图中看到,我在matlab m文件代码中具有以下表达式: K = P * D * D' * P; 其中,p是nxn矩阵,d是nx1列向量(n = 4,如果很重要). 为什么我会收到此警告消息? 如果我在那里使用或不使用括号,哪些更改? 解决方案 浮点算术不是关联的.因此,通常,a * (b * c)不一定给出与(a * b) * c的结果. 您的书面陈述等同于((P * D) * D') * P,因此编译器警告您,如果您依靠D * D'的Hermitian对称性,则应强迫它准确地计算出来. 其他解决方案 作为旁注:您可以随时进行 K = (K + K') / 2; 要执行K的Hermetian-tile,但是最好将其作为遗传者作为赫米尔人,如P * (D * D') * P提示所建议的. 编辑:实际上,要注意的一件事是,如果P通常是对角线,K只有一定是隐士.即使P作为置换矩阵(正如字母所暗示的),也不能保证K成为隐士.唯一
我有一个流数据的单个向量(29个数据)和3D矩阵数据(360*180*29) 我想找到单个向量和3D向量之间的相关性.相关矩阵的大小为360*180. > str(ScottsCk_flow_1981_2010_JJA) num [1:29] 0.151 0.644 0.996 0.658 1.702 ... > str(ssta_winter) num [1:360, 1:180, 1:29] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... > summary(ssta_winter) Min. 1st Qu. Median Mean 3rd Qu. Max. NA's -2.8 -0.2 0.1 0.2 0.6 6.0 596849.0 上面是向量和3D矩阵的结构. 3D矩阵具有许多值为null. > for (i in
我正在使用Vuforia SDK来构建我的AR应用程序. 通过使用TrackableResult-> getPose(),我可以获得目标框架标记的模型视图矩阵. 但是我也需要纯视图矩阵来进行一些计算.有什么方法可以得到吗? 解决方案 要从上面的Peedee评论中遵循,这是我发现非常有用的图片,与此网页. 对不起,我无法将其作为评论,但他们不允许在评论中图片. 请注意,不同的文本可能对每个空间使用略有不同的名称,但是总体想法应该相同! 其他解决方案 我的第一次学习OpenGL实际上是两个月前在Vuforia的,我现在为自己得出结论,Vuforia在示例中命名变量的命名令人困惑. 我将所谓的" ModelViewMatrix_vuforia"的名称更改为" ViewMatrix",因为它确实是这样.它从世界空间转变为查看空间/眼睛空间. 在我理解"模型矩阵"的过程中,每个模型都将是独特的,并将我的模型相互依靠.您不一定需要一个;如果您的模型已经在世界空
我正在尝试基于 vtk 实现MRT-DTI实时光纤视觉化工具. 因此,我们需要阅读 dti 张量/矩阵 在nifti image (.nii)中存储的 我真的不知道该怎么做. 从NIFTI文件中检索单个标量值不是问题,但是我不知道如何获得张量(3x3/4x4矩阵). 我们真的很感谢任何帮助! 由于niftiimagereader应该将张量的nifti映像读取为多组分vtkimage,因此我们尝试了以下方式: vtkSmartPointer extractTupel1 = vtkSmartPointer::New(); extractTupel1->SetInputConnection(reader->GetOutputPort()); extractTupel1->SetComponents(0,1,2); extractTupel1->Updat
我正在尝试使用腋窝矩阵库进行矩阵计算,并且需要大键和拉帕克. Armadillo文档建议从 http://www.stanford.edu/〜vkl/code/libs.html 其中有.lib和.dll文件.唯一的问题是我不知道如何获得Visual Studio(Express Edition 2008)来识别这些文件.我尝试将它们复制到Visual C ++ include和lib Directories C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\和C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\,但是它似乎没有做任何事情,因为当我尝试编译程序时,我会得到很多"未解决的外部符号"错误说它找不到拉帕克功能. 这是错误消息: 1>Linking... 1>LINK : warning LNK4076: invalid in
如何快速可视化r? 中的大型矩阵 我有时使用大型数字矩阵(例如3000 x 3000),并且快速可视化它们是一个非常有用的质量控制步骤.这是我以前选择的语言MATLAB中非常简单快速的.例如,显示1000x1000矩阵需要0.5秒: rand_matrix = rand(1000,1000); tic imagesc(rand_matrix) toc >> Elapsed time is 0.463903 seconds. 我希望在R中具有相同的功能,但是不幸的是可视化矩阵的R 似乎很慢.例如,使用image.plot()相同的随机矩阵需要超过10秒钟才能显示: require(tictoc) require(image.plot) mm = 1000 nn = 1000 rand.matrix = matrix(runif(mm*nn), ncol=mm, nrow=nn) tic("Visualizing matrix") image.plot(rand.matr
我有一个巨大的稀疏矩阵(1,000 x 1,000,000),我无法在matlab上加载(不够的RAM). 我想可视化这个矩阵以了解其稀疏性和值的差异. 由于内存约束,我想进行以下操作: 1-将矩阵分为4个矩阵 2-将每个矩阵加载在MATLAB上,并将其可视化,以使颜色对值(尤其是零)的想法(尤其是零) 3-"粘贴"我将获得的4张图像,以便对原始矩阵有一个全局想法 (i)可以在matlab中加载"矩阵的一部分"? (ii)对于可视化工具,i a>间谍(和daspect).但是,此函数仅使其对其量表无关的非零值可视化.有没有办法添加颜色代码? (iii)如何"粘贴"图以制作一个? 解决方案 如果您的矩阵稀疏,则似乎当前存储它的方法(作为文本文件中的完整矩阵)的效率非常低,并且肯定会使将其加载到MATLAB中.但是,我怀疑,只要它足够稀疏,它仍然可以作为稀疏矩阵进入MATLAB. 传统的方法是一次加载所有这些,然后转换为稀疏表示形
我的问题非常简单:我有一堆矩阵,彼此堆叠在一起,因此我有大量的数据.我想可视化此数据,如下图图所示: 在我看来,需要一定程度的透明度,也许与每个体素的价值相关.也就是说,价值越高,体素对其背后的事物的"透明"越少.我不确定如何从此开始. 这是一些简单的代码,可以使我的数据量量,所以我现在想要的就是尝试可视化. clear all %Make the random volume mat = rand(50,50,100); %Place high values in particular parts of the volume sigCoors.rows = [23:33]; sigCoors.columns = [40:45]; sigCoors.time = [55:85]; mat(sigCoors.rows, sigCoors.columns, sigCoors.time) = 10.*rand(length(sigCoors.rows), length(