gpt4 book ai didi

math - Three.js 平面的奇怪现象

转载 作者:行者123 更新时间:2023-12-03 00:46:13 24 4
gpt4 key购买 nike

这是我在这里问的第一个问题!如果我做错了什么,请提前道歉。

我编写了一个程序,在 Three.js 中堆叠球体。

每个球体都以随机生成(在一定范围内)的 x 和 z 坐标以及高于地平面的 y 坐标开始。我从球体的每个顶点转换光线,看看它在与现有网格相交之前可以下降多远。

对于每个球体,我在 80 个不同的随机 xz 位置对其进行测试,看看它可以落到最远的位置,然后将其“掉落”到该位置。

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

image of regular bubble tower

但是,我注意到当我将气泡半径设置得非常小并且塔的基础尺寸很大时,会发生这种情况:

image of bubbles clustered towards the edges of square

如果我将递归次数从 80 调低,这种效果就不那么明显了。由于某种原因, Three.js 似乎认为球体可以在基础正方形的角处进一步下落。原点正好位于基础正方形的中心 - 也许这是相关的。

当我控制台记录从光线转换器接收到的所有下落距离时,距离正方形中心越远,它们确实越大......但仅限于小数点后第 11 或第 12 位。

这并不是我想要解决的问题(在选择最大的那个之前,我可以将下落距离四舍五入到最接近的小数点后十位),而是我非常好奇的问题。有谁知道为什么会发生这种情况?有人遇到过类似的事情吗?

编辑:

我编辑了代码来移动所有内容,使原点不再位于基础正方形的中心:

image of edited code

那么我的想法是否正确......这种现象与距原点的距离有关,而不是与球落到的表面有关?

最佳答案

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

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

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

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

直角三角形:

enter image description here

餐巾纸背面草图:

enter image description here

关于math - Three.js 平面的奇怪现象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32969789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com