小编Cas*_*yle的帖子

JavaScript MouseEvent.movementX 和 movementY 大峰值

在 Chrome 锁定指针后,如果您移动鼠标,MouseEvent.movementX 和 MouseEvent.movementY 有时会返回一个非常大的数字,似乎大约是窗口大小的一半。

这是一个最小的代码示例:

<html>
    <body>
        <canvas id="canvas" width="100" height="100" style="border: 1px solid">
        </canvas>
        <script>
            var canvas = document.getElementById("canvas");

            canvas.addEventListener("mousedown", function() {
                canvas.requestPointerLock();
            });

            document.addEventListener("mousemove", function() {
                if(Math.abs(event.movementX) > 100)
                    console.log(event.movementX);
            });
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的预感是,当您调用 requestPointerLock() 时,它实际上并没有将鼠标锁定在一个位置,而只是将其隐藏。当鼠标离开窗口时,它会将鼠标捕捉回中心,这会导致变量出现大的尖峰。

大尖峰的原因是什么,我该如何解决?

javascript mousemove pointerlock

6
推荐指数
0
解决办法
1472
查看次数

在Windows 8上使用PHP 5.6启用CURL

我的Windows 8计算机上有Apache 2.4.12和php 5.6.9,我正在尝试为php启用curl扩展,但是我没有取得多大成功.在互联网上搜索此问题之后,似乎其他人遇到了同样的问题.以下是我发现的建议:

  • ;extension=php_curl.dll在php.ini中取消注释
  • ;extension_dir = "ext"在php.ini中取消注释
  • 下载并替换php的ext目录中的php_curl.dll文件与网站中的一个
  • 添加到安装php的PATH环境变量
  • 将libeay32.dll和ssleay32.dll从安装php的地方复制到C:\ Windows\System32

我已经尝试了除了列表中的第三项之外没有成功的每一个建议,因为它没有用于使用php 5.6的curl的.dll文件,实际上最高版本可用于php 5.4.必须有办法启用此扩展,而不必将我的PHP版本降级到5.4并使用该网站的.dll文件.我已经尝试在互联网上搜索一个.dll文件,如链接网站上的那个文件,对于php 5.6,而且版本已经过时了,但是我没有找到一个好运,所以我想帮助解决这个问题.

如何在我的Windows 8机器上为php 5.6启用curl?

php windows curl

5
推荐指数
2
解决办法
8153
查看次数

在 3D 空间中实现扩展多面体算法

我正在尝试在 3D 空间中实现 EPA 算法,但我似乎发现了一种凸单纯形可以变成凹单纯形的情况。

考虑这个单纯形:

在此输入图像描述

因为很难看出这里发生了什么,所以它是动画的:

原点是红、绿、蓝轴助手。没有边缘连接的白色球体代表我需要将多面体扩展到下一个的点。5 个黄色箭头是应删除的面的法线,因为它们与新点的原点方向相同。有些面看起来并不在同一方向,但我已经验证它们是作为面法线和新点的点积是:

  • 0.45396564417079877
  • 0.9473689548609279
  • 0.3346846050014339
  • 0.09982613239032267
  • 0.09982617482390854

所以 .gif 右侧的那两个面只是同一方向的大麦。

好的,EPA 算法要求删除这些面孔:

然后使用我们删除的面中的剩余边缘构造到新点的新面。但现在您可以看到凸单纯形已变成凹单纯形:

这显然是不对的,但我不确定我错在哪里。对我来说,就像我删除了不应该有的面,但这些面与新点的方向相同。

这是我的代码:

var EPA = function(aWorldVerts, bWorldVerts, simplex) {
    var simplexFaces = [{a: 0, b: 1, c: 2},
                        {a: 0, b: 1, c: 3},
                        {a: 0, b: 2, c: 3},
                        {a: 1, b: 2, c: 3}];

    var ret = null;

    while(true) {
        var face = findClosestFace(simplex, simplexFaces);
        var point = support(aWorldVerts, bWorldVerts, face.norm);
        var dist = point.clone().dot(face.norm);

        if(dist - face.dist …
Run Code Online (Sandbox Code Playgroud)

javascript collision-detection

5
推荐指数
1
解决办法
1643
查看次数