1 canvas的坐标系

坐标原点在左上角,横轴向右为X轴正方向,竖直向下为Y轴正方向

2 webgl的坐标系

坐标原点在绘图区域的中心点,横向右为X轴正方向,竖直向上为Y轴正方向,横纵坐标区域范围为(-1,1)


3 坐标转换

    • 鼠标在浏览器客户区点击的位置为:(event.clientX,event.clientY)

    • 那么在canvas中的坐标(x,y)就是:
      var rect = event.target.getBoundingClientRect();
      x = event.clientX-rect.left;
      y = - (event.clientY-rect.top);
      其中rect.left是canvas左边界距离浏览器客户区左边界的位置,rect.top是canvas上边界距离浏览器客户区上边界的位置,注意y坐标加符号是因为canvas中Y轴向下为正方向

    • 在webgl中的坐标位置(x,y)则为:
      x = ( (event.clientX-rect.left) -canvas.width/2 )/(canvas.width/2);
      y = (canvas.height/2 - (event.clientY-rect.top))/(canvas.height/2);
      利用上一步从canvas坐标系转换到webgl坐标系,主要的工作就是需要将坐标范围映射到(-1,1)的范围,其次是注意webgl中Y轴向上是正方向

canvas与webgl坐标转换的更多相关文章

  1. canvas svg webgl threejs d3js 的区别

    canvas 绘制2D位图. Echarts是基于Canvas技术的可视化工具,底层封装了原生的JavaScript的绘图 API. canvas里面绘制的图形不能被引擎抓取,canvas中我们绘制图 ...

  2. CSS3、SVG、Canvas、WebGL动画精选整理

    一.CSS3动画 名称 用途 链接 阴影波纹特效 1.元素hover效果 2.突出表现效果 http://www.jq22.com/code80 横板导航菜单动画 导航菜单 http://www.jq ...

  3. 八大疯狂的HTML5 Canvas及WebGL动画效果——8 CRAZY ANIMATIONS WITH WEBGL AND HTML5 CANVAS【收藏】

    HTML5, WebGL and Javascript have changed the way animation used to be. Past few years, we can only a ...

  4. canvas之webgl的打开方式

    OK,一个完整的dome是从无到有的.这篇文章将记录我的webgl之旅.不定时更新. 首先,新建一个canvas元素. 然后获取到它. var e = document.ElementById('ca ...

  5. canvas之webgl的浏览器开启方式

    引自百度知道的回答 1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到C ...

  6. 【JavaScript】SVG vs Canvas vs WebGL

    参考资料: http://blog.csdn.net/lufy_legend/article/details/38292125 http://zhidao.baidu.com/link?url=e4n ...

  7. 【GISER&&Painter】Chapter01:WebGL渲染初体验

    基于上一篇OpenGL的渲染原理,这两周又陆续接触了一些关于WebGL绘图的一些内容,因为刚入门,很多东西又很晦涩,所以特意花了小半天的时间整理了一下,特此记录. 零  画一个多边形吧! 把一个多边形 ...

  8. WebGL入门教程(二)-webgl绘制三角形

    前面已经介绍过了webgl,WebGL入门教程(一)-初识webgl(http://www.cnblogs.com/bsman/p/6128447.html),也知道了如何绘制一个点,接下来就用web ...

  9. WebGL入门教程(一)-初识webgl

    一.WebGL和传统网页的区别: 普通网页组成成分:HTML.JavaScript: WebGL网页组成成分:HTML5.JavaScript和GLSL ES(着色器语言 OpenGL ES): 二. ...

随机推荐

  1. maven安装cucumber的pom文件设置

    1.在windows上安装maven 2.安装Eclipse 3.在eclipse上面配置maven,并新建一个maven项目 4.在maven项目里面找到pom.xml,编辑pom.xml,之后点击 ...

  2. 安全运维之:Linux后门入侵检测工具的使用

    安全运维之:Linux后门入侵检测工具的使用 https://blog.csdn.net/exitgogo/article/details/39547113

  3. windows、Linux同步外网NTP服务器时间

    配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置  Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...

  4. NSLog无法使用

    iOS/macos 中 #import<foundation/foundation.h> nslog不能用 如果项目中包含c/c++程序代码 将其后缀修改成.m .mm 将项目的build ...

  5. webpack浅析---出口篇

    webpack有四个核心概念: 入口(entry) 输出(output) loader 插件(plugins) 输出: 在哪里输出创建的bundles,以及如何命名这些文件, 默认./dist fil ...

  6. Android如何在http头信息里设置参数

    在使用http请求server时常常要传递一些参数给server,如IMEI号.平台号.渠道号.客户端的版本号等一些通用信息,像这些参数我们没有必要每次都拼在url后,我们可以统一添加到http头里. ...

  7. vue 需求 data中的数据之间的调用

    我遇到过这种情况  就是在我的data中 会有数据调用data中的其他数据 如图  我的alertInfoType需要拿到screeningCondition中type的值 用过vue的都知道 我是不 ...

  8. tcp、ip、http

    tcp是传输层协议,ip是网络层协议,http是应用层协议,简单说就是tcp是传输数据,而http是封装数据. rpc与http的区别是项目大的话,接口间调用变多的话,采用rpc的话,不用像http那 ...

  9. PDF 转 PNG JPG 操作

    # gs   gs -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=pnggray - ...

  10. Spring-Data-JPA @Query注解 Sort排序

    当我们使用方法名称很难,达到预期的查询结果,就可以使用@Query进行查询,@Query是一种添加自定义查询的便利方式 (方法名称查询见http://blog.csdn.net/niugang0920 ...