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

做网站市场价格中铁建发展集团有限公司

做网站市场价格,中铁建发展集团有限公司,赣州网站设计哪里好,襄阳文明建设投诉网站旋转 1 #xff09;旋转的概念 三维物体的旋转要比位移复杂一点#xff0c;三维物体的旋转需要满足以下条件#xff1a; 旋转轴旋转方向旋转角度 场景举例 模型站在旋转轴的起点进行旋转模型要往左转还是往右转#xff0c;就是旋转的方向模型旋转的大小就是旋转角度 2 旋转的概念 三维物体的旋转要比位移复杂一点三维物体的旋转需要满足以下条件 旋转轴旋转方向旋转角度 场景举例 模型站在旋转轴的起点进行旋转模型要往左转还是往右转就是旋转的方向模型旋转的大小就是旋转角度 2 旋转方向的正负 在webgl中除裁剪空间之外的大部分功能都使用了右手坐标系在webgl中可以暂且将其当成右手坐标系, 下图就是右手坐标系 以上图为例 当物体绕 z 轴从x轴正半轴向y轴正半轴逆时针旋转时是正向旋转反之为负。当物体绕 x 轴从y轴正半轴向z轴正半轴逆时针旋转时是正向旋转反之为负。当物体绕 y 轴从z轴正半轴向x轴正半轴逆时针旋转时是正向旋转反之为负。 如下图就是正向旋转 围绕z轴(骑着z轴)从x轴到y轴逆时针转动就是正向旋转 旋转公式 如下让顶点围绕 z 轴旋转的场景 已知 点A的位置是(ax,ay,az)点A要围绕z轴旋转β度转到点B的位置 求点A旋转后的bx、by位置解 因为∠β是已知的∠α 可以通过点 A 得出所以我们可以得出∠xOB α β那我们通过三角函数就可以推出bx、by设 ∠xOB θ则bx cosθ * |OA| by sinθ * |OA| // 注意这里因为是旋转, 所以 |OA| |OB|, 统一用 |OA|来表示上面的|OA|是点O到点A的距离可以直接用点A求出|OA| Math.sqrt(ax * ax ay * ay)那我们接下来只需要知道cosθ和sinθ的值即可因为θ α β所以我们可以利用和角公式求cosθ和sinθ的值cosθ cos(α β) cosθ cosα * cosβ - sinα * sinβsinθ sin(α β) sinθ cosβ * sinα sinβ * cosα所以bx cosθ * |OA| bx (cosα * cosβ - sinα * sinβ) * |OA| bx cosα * cosβ * |OA| - sinα * sinβ * |OA|by sinθ * |OA| by (cosβ * sinα sinβ * cosα) * |OA| by cosβ * sinα * |OA| sinβ * cosα * |OA|因为cosα * |OA| ax sinα * |OA| ay所以我们可以简化bx、by的公式bx ax * cosβ - ay * sinβ by ay * cosβ ax * sinβ上面的bx、by就是我们要求的答案 在着色器中旋转 可以直接在着色器里写旋转公式 script idvertexShader typex-shader/x-vertexattribute vec4 a_Position;float angle radians(80.0);float sinB sin(angle);float cosB cos(angle);void main() {gl_Position.x a_Position.x * cosB - a_Position.y * sinB;gl_Position.y a_Position.y * cosB a_Position.x * sinB;gl_Position.z a_Position.z;gl_Position.w 1.0;} /scriptradians(float degree) 将角度转弧度 sin(float angle) 正弦 cos(float angle) 余弦 用js旋转图形 我们将顶点着色器里的正弦值和余弦值暴露给js便可以用js旋转图形了 script idvertexShader typex-shader/x-vertexattribute vec4 a_Position;uniform float u_SinB;uniform float u_CosB;void main() {gl_Position.x a_Position.x * u_CosB-a_Position.y * u_SinB;gl_Position.y a_Position.y * u_CosBa_Position.x * u_SinB;gl_Position.z a_Position.z;gl_Position.w 1.0;} /script在js 中修改uniform 变量 const u_SinB gl.getUniformLocation(gl.program, u_SinB); const u_CosB gl.getUniformLocation(gl.program, u_CosB); const angle 0.3; gl.uniform1f(u_SinB, Math.sin(angle)); gl.uniform1f(u_CosB, Math.cos(angle));之后让图形转起来 !(function ani() {angle 0.01;gl.uniform1f(u_SinB, Math.sin(angle));gl.uniform1f(u_CosB, Math.cos(angle));gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES, 0, 3);requestAnimationFrame(ani); })()完整代码 canvas idcanvas/canvas script idvertexShader typex-shader/x-vertexattribute vec4 a_Position;uniform float u_SinB;uniform float u_CosB;void main() {gl_Position.x a_Position.x * u_CosB - a_Position.y * u_SinB;gl_Position.y a_Position.y * u_CosB a_Position.x * u_SinB;gl_Position.z a_Position.z;gl_Position.w 1.0;} /script script idfragmentShader typex-shader/x-fragmentvoid main() {gl_FragColor vec4(1.0,1.0,0.0,1.0);} /script script typemoduleimport { initShaders } from ./utils.js;const canvas document.getElementById(canvas);canvas.width window.innerWidth;canvas.height window.innerHeight;const gl canvas.getContext(webgl);const vsSource document.getElementById(vertexShader).innerText;const fsSource document.getElementById(fragmentShader).innerText;initShaders(gl, vsSource, fsSource);const vertices new Float32Array([0.0, 0.1,-0.1, -0.1,0.1, -0.1]);const vertexBuffer gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);const a_Position gl.getAttribLocation(gl.program, a_Position);gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0);gl.enableVertexAttribArray(a_Position);// 获取Uniform变量const u_SinB gl.getUniformLocation(gl.program, u_SinB)const u_CosB gl.getUniformLocation(gl.program, u_CosB)// 修改uniform 变量let angle 0.3gl.uniform1f(u_SinB, Math.sin(angle))gl.uniform1f(u_CosB, Math.cos(angle))gl.clearColor(0.0, 0.0, 0.0, 1.0);gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES, 0, 3);!(function ani() {angle 0.01;gl.uniform1f(u_SinB, Math.sin(angle));gl.uniform1f(u_CosB, Math.cos(angle));gl.clear(gl.COLOR_BUFFER_BIT);gl.drawArrays(gl.TRIANGLES, 0, 3);requestAnimationFrame(ani);})() /script
http://www.yutouwan.com/news/62805/

相关文章:

  • 网站配置怎么html5做宠物饲养网站
  • 官方网站建设合作协议一直免费的服务器下载
  • 网站建设如何在宣传部备案图像生成器在线制作
  • 网站flash素材域名解析暂时失败
  • 菏泽网站建设报价陕西网站维护
  • 网站开发 百度编辑器wordpress+爱情主题公园
  • 园林设计公司网站国外 平面设计网站
  • wordpress 建站免费百度官方营销推广平台有哪些
  • 赣州市住房和城乡建设局网站seo推广团队
  • 新网 网站建设crm销售
  • 怎样做订房网站外贸单子怎么找
  • 有没有好的网站义乌前十跨境电商公司
  • 江苏恒健建设集团有限公司网站如何添加wordpress主题
  • 长沙网页制作网站自媒体网络营销是什么
  • 专业网站设计制作服务下列 是计算机网页制作工具
  • 锤子网站cms版本天猫网页版
  • 网站用html模拟图片无极县招聘信息最新招聘
  • 广宁县住房建设局网站学校的网站的代码模板下载
  • 普通网站一年要多少钱莆田网站关键词优化
  • 淄博市网站云平台wordpress 中文乱码
  • 佛山网站搭建公司网站怎么做效果更好
  • 资质升级业绩备案在哪个网站做网站建设平台开发
  • 珠海建网站多少钱郴州百度seo
  • 网站seo检测南京每月做社保明细在哪个网站查
  • 哪个网站做超链接网站做百度收录的意义
  • 乡镇网站建设方案百图汇免费素材图库
  • 做网站公司做网站公司有哪些做陶瓷的公司网站
  • 网站建设服务范围优化方案电子版
  • 速橙科技有限公司网站建设开发工具怎么使用
  • 网站建设需要多少时间怎么找拉新推广平台