当前位置: 首页 > news >正文

云南建筑工程网大连网络推广网站优化找哪家好

云南建筑工程网,大连网络推广网站优化找哪家好,100深夜看黄禁用免费,手机版网页前言#xff1a;依赖矩阵库 WebGL矩阵变换库_山楂树の的博客-CSDN博客 先平移#xff0c;后旋转的模型变换#xff1a; 1.将三角形沿着X轴平移一段距离。 2.在此基础上#xff0c;旋转三角形。 先写下第1条#xff08;平移操作#xff09;中的坐标方程式。 等式1依赖矩阵库 WebGL矩阵变换库_山楂树の的博客-CSDN博客  先平移后旋转的模型变换 1.将三角形沿着X轴平移一段距离。 2.在此基础上旋转三角形。 先写下第1条平移操作中的坐标方程式。 等式1 “平移” 后的坐标    平移矩阵 x 原始坐标 然后对平移后的坐标进行旋转。 等式2 “平移后旋转” 后的坐标    旋转矩阵 x 平移后的坐标 当然你也可以分步计算这两个等式但更好的方法是将等式1代入到等式2中把两个等式组合起来 等式3 “平移后旋转” 后的坐标    旋转矩阵 x平移矩阵 x 原始坐标 这里 旋转矩阵 x平移矩阵 x 原始坐标 等于注意括号的位置 旋转矩阵 x 平移矩阵x 原始坐标 最后我们可以在JavaScript中计算旋转矩阵×平移矩阵然后将得到的矩阵传入顶点着色器。像这样我们就可以把多个变换复合起来了。一个模型可能经过了多次变换将这些变换全部复合成一个等效的变换就得到了模型变换model transformation或称建模变换modeling transformation相应地模型变换的矩阵称为模型矩阵model matrix。  再来复习一下矩阵的乘法 如上所示将两个3×3矩阵A与B相乘的结果如下 等式4 上式是两个3×3矩阵相乘的结果实际用到的模型矩阵是4×4的矩阵。然而要注意矩阵相乘的次序很重要AB的结果并不一定等于BA。 下面就来看一下如何使用Matrix4对象进行矩阵乘法从而将多个变换复合起来实现先平移然后旋转。 示例代码  var VSHADER_SOURCE attribute vec4 a_Position;\n uniform mat4 u_ModelMatrix;\n void main() {\n gl_Position u_ModelMatrix * a_Position;\n }\n;var FSHADER_SOURCE void main() {\n gl_FragColor vec4(1.0, 0.0, 0.0, 1.0);\n }\n;function main() {var canvas document.getElementById(webgl);var gl getWebGLContext(canvas);if (!gl) {console.log(Failed to get the rendering context for WebGL);return;}if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) {console.log(Failed to intialize shaders.);return;}var n initVertexBuffers(gl);if (n 0) {console.log(Failed to set the positions of the vertices);return;}// 创建Matrix4对象以进行模型变换var modelMatrix new Matrix4();// 计算模型矩阵var ANGLE 60.0; // 旋转角var Tx 0.5; // 平移距离modelMatrix.setRotate(ANGLE, 0, 0, 1); // 设置模型矩阵为旋转矩阵modelMatrix.translate(Tx, 0, 0); // 将模型矩阵乘以平移矩阵// 将模型矩阵传输给顶点着色器var u_ModelMatrix gl.getUniformLocation(gl.program, u_ModelMatrix);if (!u_ModelMatrix) {console.log(Failed to get the storage location of u_xformMatrix);return;}gl.uniformMatrix4fv(u_ModelMatrix, false, modelMatrix.elements);gl.clearColor(0, 0, 0, 1);gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES, 0, n); }function initVertexBuffers(gl) {var vertices new Float32Array([0, 0.3, -0.3, -0.3, 0.3, -0.3]);var n 3; // The number of verticesvar vertexBuffer gl.createBuffer();if (!vertexBuffer) {console.log(Failed to create the buffer object);return false;}gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);var a_Position gl.getAttribLocation(gl.program, a_Position);if (a_Position 0) {console.log(Failed to get the storage location of a_Position);return -1;}gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0);gl.enableVertexAttribArray(a_Position);return n; } 最关键的两行是如下两行我们计算了旋转矩阵×平移矩阵 解释模型矩阵  我们首先调用了包含set前缀的方法setRotate传入的参数用以计算旋转矩阵并写入modelMatrix上图第一行。接下来我们调用了不带set前缀的方法translate意思就是先计算出一个平移矩阵然后用原先存储在modelMatrix变量中的矩阵乘以这个新计算出的平移矩阵将得到的结果写回modelMatrix中上图第二行。由于在第一步之后modelMatrix已经包含了一个旋转矩阵。那么经过了这一步modelMatrix中的矩阵就是旋转矩阵×平移矩阵了。 你可能会注意到“先平移后旋转”的顺序与构造模型矩阵旋转矩阵×平移矩阵的顺序是相反的这是因为变换矩阵最终要与三角形的三个顶点的原始坐标矢量相乘再看一下等式3你就明白了。 最后我们把模型矩阵传给顶点着色器中的u_ModelMatrix变量并如常将图形绘制出来。在浏览器中加载程序你可以看到如下平移和旋转后的红色三角形。 先旋转后平移的模型变换 让我们修改一下示例程序先进行旋转然后再平移。很简单你只需交换旋转和平移的次序。在这个例子中先调用含set前缀的方法setTranslate进行平移操作再调用不含set前缀的方法rotate进行旋转。  如你所见改变旋转和平移的次序之后结果就不一样了。原理是显而易见的如下图所示。
http://www.dnsts.com.cn/news/237472.html

相关文章:

  • 个人怎么建网站最好的外贸网站建设
  • 怎么做服务器网站下载链接绘制网站结构图
  • 石林网站建设网站开发中职教材
  • 网站文章编辑器代码俄罗斯乌克兰死亡人数
  • 做网站用的国外节点服务器网站建设昆山
  • 小创业公司网站怎么做织梦如何临时关闭网站
  • 建设企业网站优势合肥公司注册
  • 外贸网站网站建设通过wordpress建站
  • 网站优化seo培快速软件开发平台
  • 刀具东莞网站建设动漫网站建设毕业设计
  • 宿州产品网站建设各大网站收录查询
  • 公司的网站建设服务费wordpress首页导航栏
  • 在哪个网站可以做二建的题在线做app
  • 深圳福田区住房和建设局网站官网膜结构行业做网站
  • 贵阳网站建设包首页网站制作素材
  • 订货系统如何获取网站的seo
  • 个人博客网站制作代码安装一个宽带多少钱
  • 找设计师网站南宁seo团队费用是多少
  • 选择大连网站建设高端自适应网站开发
  • wordpress快速仿站教程西宁做网站seo
  • 厦门网站建设价制作网页时要综合考虑哪些因素
  • 石家庄市住房和建设局网站怎么搭建小程序平台
  • 如何做视频网站 需要注意的地方网站开发与维护的相关大学
  • 怎样做服装网站企业邮箱登陆
  • 刷粉网站推广免费建设公关型的企业网站有哪些
  • 为农村建设网站报告一站式装修平台
  • 河北省水利建设市场网站wordpress表单统计插件下载
  • 城阳网站制作wordpress 显示当前位置
  • 哈尔滨网站制作维护网络广告策划书模板
  • 怎么知道网站的空间服务商遵义外国网站制作