与three.js平面的奇怪现象

Mar*_*tha 9 math three.js

这是我在这里问过的第一个问题!如果我以某种方式做错了,请提前道歉.

我已经编写了一个程序,它在three.js中堆积了球体.

每个球体以随机生成(在某些边界内)x和z坐标开始,并且y坐标高于地平面.我从每个球体的顶点投射光线,以查看它在与现有网格相交之前可以落下多远.

对于每个球体,我在80个不同的随机xz位置进行测试,看看它可以落到哪里最远,然后将它"放"到那个位置.

这是为了创建像这样的泡泡塔:

常规泡沫塔的形象

但是,我注意到当我使气泡半径非常小并且塔的基本尺寸变大时,会发生这种情况:

气泡的图像聚集在广场的边缘

如果我将递归从80减去,这种效果就不那么明显了.出于某种原因,three.js似乎认为球体可以在基座正方形的角落处进一步下降.原点恰好位于基地广场的中心 - 也许这是相关的.

当我记录我从raycaster接收到的所有跌落距离时,它们距离广场中心越远,它们确实越大......但仅在小数点后11或12位.

这不是我试图解决的问题(在我选择最大的一个之前,我可以将下降距离舍入到最接近的第10个小数位),但我非常好奇.有谁知道为什么会这样?以前有人遇到类似的东西吗?

编辑:

我编辑了我的代码以移动所有内容,使原点不再位于基本方块的中心:

编辑代码的图像

所以我的思考是正确的......这种现象与距离原点的距离有关,而不是与球落在其上的表面有什么关系?

gro*_*zek 1

事实上,您所看到的图案正是因为塔底部的角和边缘距离您掉落球的原点最远。您正在创建一个直角三角形(见下图),其中垂直“腿”是从您将球落下的原点到网状地板正下方的点(与地板成直角- 因此)的线名称,直角三角形)。斜边始终是直角三角形的最长边,从原点正下方的点投射的光线越远,斜边就越长,并且您的算法越有利于更长的距离(无论分数如何

增加塔底座的尺寸会放大这种效果,因为斜边测量值现在可能变得更大。减小球的大小也有利于您所看到的图案,因为现在每个球不再占用那么多的空间,因此到角落的距离测量值不会像使用较大的球那样快速填充,因此现在更多的球会在填充剩余空间之前聚集在边缘。

将掉落原点移动到一侧或另一侧会产生到相对侧和角的更长距离(斜边),以便球将首先填充那些遥远的位置。

当您将样本大小从 80 个减少到 20 个时,您看到的效果较小的原因是,检测到球可能落到的这些更远的位置的机会更少(赔率游戏)。

直角三角形:

在此输入图像描述

餐巾纸背面的草图:

在此输入图像描述