WebGL坐标系、Canvas坐标系和浏览器客户区坐标转化

WebGL坐标系、Canvas坐标系和浏览器客户区坐标转化

1.Canvas坐标系

Canvas坐标系的原点在左上角,X轴向右为正,y轴向下为正

2.WebGL坐标系

WebGL坐标系的原点在绘图区域的中心点。X轴向右为正,Y轴向上为正,Z轴向外为正。

3.浏览器客户区坐标与Canvas坐标和WebGL坐标的转换

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

那么在canvas中的坐标(x,y)就是:

var rect = ev.target.getBoundingClientRect();
x = event.clientX-rect.left;
y = -(event.clientY-rect.top);
y = event.clientY-rect.top;

其中rect.left是canvas左边界距离浏览器客户区左边界的位置rect.top是canvas上边界距离浏览器客户区上边界的位置

在webgl中的坐标位置(x,y)则为:

x = ( (event.clientX-rect.left) -canvas.width/2 )/(canvas.width/2);
y = -((event.clientY-rect.top)-canvas.height/2)/(canvas.height/2);(因为WebGL坐标系,Y轴向上为正,而Canvas坐标系向下为正。在转化的时候,坐标相减后,前面加一个负号)
也就是y = (canvas.height/2 - (event.clientY-rect.top))/(canvas.height/2);

利用上一步从canvas坐标系转换到webgl坐标系,主要的工作就是需要将坐标范围映射到(-1,1)的范围,其次是注意webgl中Y轴向上是正方向因为WebGL坐标系,Y轴向上为正,而Canvas坐标系向下为正。在Y坐标转化的时候,坐标相减后,前面加一个负号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值