您的位置:首页 > 科技 > IT业 > 常州高端网站建设_日本亚马逊代购平台_谷歌seo培训_天津seo公司

常州高端网站建设_日本亚马逊代购平台_谷歌seo培训_天津seo公司

2025/8/5 0:25:56 来源:https://blog.csdn.net/m0_72030584/article/details/143314196  浏览:    关键词:常州高端网站建设_日本亚马逊代购平台_谷歌seo培训_天津seo公司
常州高端网站建设_日本亚马逊代购平台_谷歌seo培训_天津seo公司

弯道超车:

盒子模型:

又称CSS 盒模型,包含contentpaddingbordermargin 四个部分。

clientWidth、scrollWidth、offsetWidth之间的区别:

        offsetWidth:包含内容、paddingborder 和滚动条的宽度(如果有滚动条),但不包含 margin

        clientWidth:元素的可见内容区域和padding的宽度,但不会包括边框和滚动条

        scrollWidth:包含内容的完整宽度(包括溢出部分,即滚动条),但不含 border,margin

webGL坐标系:

        WebGL 采用的标准坐标系范围为 [−1,1]

                X 轴:水平轴,从左到右,范围为 -1 到 1。

                Y 轴:垂直轴,从下到上,范围为 -1 到 1。

                Z 轴:深度轴,从屏幕前到后,靠近观察者的为 -1,远离观察者的为 1。

        

html和脚本js:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>测试</title><script src="./lib/webgl-utils.js"></script><script src="./lib/webgl-debug.js"></script><script src="./lib/cuon-utils.js"></script><script src="./js/clickPoint.js"></script>
</head><body onload="main()"><canvas id="canvas" width="400" height="400"></canvas>
</body></html>

// clickPoint.js
var vshader_source = `
attribute vec4 a_Position;
void main(){gl_Position = a_Position;gl_PointSize = 10.0;
}
`
var fshader_source = `
void main(){gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
`
function main () {var canvas = document.getElementById('canvas')var gl = getWebGLContext(canvas)if (!gl) {console.log('获取webGl绘图上下文失败')return}if (!initShaders(gl, vshader_source, fshader_source)) {console.log('初始化着色器失败')return}var a_Position = gl.getAttribLocation(gl.program, 'a_Position')if (a_Position < 0) {console.log('获取attribute变量a_Position失败')return}// 注册鼠标点击事件// function (ev) { ... } 是一个匿名函数,作为参数传递给click函数,匿名函数可以访问main函数中的变量canvas.onmousedown = function (ev) {click(ev, gl, canvas, a_Position)};gl.vertexAttrib3f(a_Position, 0.0, 0.0, 0.0);gl.clearColor(0.0, 0.0, 0.0, 1.0)gl.clear(gl.COLOR_BUFFER_BIT)gl.drawArrays(gl.POINTS, 0, 1)
}
var g_ponints = []; // 存储点击位置的数组
// 获取鼠标点击位置并存储在一个数组中
function click (ev, gl, canvas, a_Position) {// 鼠标点击浏览器的坐标var x = ev.clientX; // 鼠标点击位置的x坐标var y = ev.clientY; // 鼠标点击位置的y坐标var rect = ev.target.getBoundingClientRect()// 画布的原点rect.left 和 rect.top// canvas.width/2 和 canvas.height/2 是canvas的中心点 即WedGL坐标系的中心点x = ((x - rect.left) - canvas.height / 2) / (canvas.height / 2)y = (canvas.width / 2 - (y - rect.top)) / (canvas.width / 2)// 将坐标存储在数组中// g_ponints.push(x);// g_ponints.push(y);g_ponints.push([x, y])// 清空canvasgl.clear(gl.COLOR_BUFFER_BIT)// 根据数组中的点绘制图形for (var i = 0; i < g_ponints.length; i += 2) {// 将点的位置传输到a_Position变量中// gl.vertexAttrib3f(a_Position, g_ponints[i], g_ponints[i + 1], 0.0);var xy = g_ponints[i]gl.vertexAttrib3f(a_Position, xy[0], xy[1], 0.0);// 绘制点gl.drawArrays(gl.POINTS, 0, 1)}
}

最终效果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com