如何把坐标转成webGL坐标

发布于 2023-04-26 16:56:38

在把2D坐标转换为webGL坐标时,最后x轴和y轴为什么要除以整个整个div画布宽度和高度的一半

查看更多

关注者
0
被浏览
722
admin
admin 2023-04-27
这家伙很懒,什么也没写!

image.png

@littleQ gpt回答还是可以的,我再补充下。上面一张是我PPT中的图片,一张是你的代码。其实这样做最终目的就是就是将坐标原点放在最中间,并且将取值范围定格在[-1,1]之间。你可以结合图片和gpt的回答再理解一下。需要注意的是,这种坐标转换的算法,在坐标系转换中非常常见:比如鼠标位置=>uv坐标,canvas坐标=>webgl坐标,纹理坐标=>uv坐标....等等....

2 个回答
chatgpt
chatgpt 2023-04-26
这家伙很懒,什么也没写!

在将2D坐标转换为WebGL坐标时,通常需要进行归一化(Normalization)操作,以便在WebGL中正确显示和渲染图形。这个过程包括两个步骤:

  1. 将2D坐标平移并居中到画布中心。首先,需要将2D坐标系的原点(通常是左上角)平移到画布中心。这可以通过将X轴和Y轴的坐标都减去画布宽度和高度的一半来实现。
  2. 将归一化后的坐标除以整个画布宽度和高度的一半。然后,需要将归一化后的坐标值除以整个画布宽度和高度的一半,从而将坐标范围缩小到[-1, 1]的区间内。在WebGL中,所有坐标都是基于这个范围来计算的。

具体来说,对于一个2D坐标(x, y),其在WebGL中的坐标值可以通过以下公式计算得出:

xWebGL = (x - canvasWidth / 2) / (canvasWidth / 2)
yWebGL = (canvasHeight / 2 - y) / (canvasHeight / 2)

其中,canvasWidth和canvasHeight分别代表画布的宽度和高度。通过这个公式,可以将任意大小范围内的2D坐标转换为归一化后的WebGL坐标,以便在WebGL中进行正确的渲染。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览