相关疑难解决方法(0)

如何在更高维度的超球面上均匀分布点?

我对在尺寸为3或更高的球面上均匀分布N个点感兴趣。

更加具体:

  • 给定多个点N和多个维D(其中D> 1,N> 1)
  • 每个点到原点的距离必须为1
  • 两点之间的最小距离应尽可能大
  • 每个点到它最近的邻居的距离不必对于每个点都相同(实际上,除非点的数量形成柏拉图式实体的顶点,或者如果N <= D,则不可能相同。 )。

我对以下内容不感兴趣:

  • 在超球面上创建均匀的随机分布,因为我希望任意两点之间的最小距离尽可能大而不是随机分布。
  • 粒子排斥模拟类型的方法,因为它们难以实现并且需要花费很长的时间才能运行较大的N(理想情况下,该方法应该是确定性的,并且以O(n)为单位)。

满足这些条件的一种方法称为斐波那契晶格,但我只能在2d和3d中找到该方法的代码实现。

斐波纳契晶格(也称为斐波纳契螺旋)背后的方法是生成绕球体表面成螺旋形的一维线,以使该线所覆盖的表面积每转大致相同。然后,您可以丢掉均匀分布在螺旋上的N个点,它们将大致均匀地分布在球体的表面上。

此答案中,有一个针对3个维度的python实现,可生成以下内容:

在此处输入图片说明

我想知道斐波那契螺旋是否可以扩展到大于3的尺寸,并在数学堆栈交换中发布了一个问题。令我惊讶的是,我收到了两个令人惊讶的答案,据我所知(因为我不完全理解所显示的数学)表明确实有可能将该方法扩展到N维。

不幸的是,我对所显示的数学知识还不够了解,无法将任何一个答案都转换成(伪)代码。我是一位经验丰富的计算机程序员,但是我的数学背景仅此而已。

我将复制我认为是以下答案之一最重要的部分(不幸的是,SO不支持mathjax,因此我必须复制为图像)

在此处输入图片说明

我遇到的上述困难:

  • 如何解析用于?n的反函数?
  • 给出的示例是d = 3的。如何为任意d生成公式?

在座的任何人都可以理解所涉及的数学知识,从而能够朝着链接斐波那契晶格问题的任一答案的伪代码实现取得进展?我知道完整的实施可能很困难,因此我对部分实施感到满意,该实施可以使我足够自己完成其余的工作。

为简化起见,我已经编写了一个函数,该函数将N个维度的球面坐标转换为笛卡尔坐标,因此该实现可以输出任意一个,因为我可以轻松进行转换。

另外,我看到一个答案为每个附加维使用下一个质数。我可以轻松地编写一个输出每个连续素数的函数,因此可以假定已经实现了。

如果未能在N个维度上实现斐波那契晶格,我很乐意接受满足上述约束的另一种方法。

math geometry pseudocode

18
推荐指数
2
解决办法
464
查看次数

如何手动创建带有顶点的网格?

我需要做什么才能创建具有以下顶点的网格:

let mut vertices : Vec<[f32; 3]> = Vec::new();

    vertices.push([0.0, 0.0, 0.0]);
    vertices.push([1.0, 2.0, 1.0]);
    vertices.push([2.0, 0.0, 0.0]);

Run Code Online (Sandbox Code Playgroud)

然后我想像这样生成一个 MeshBundle

commands
    .spawn(MeshBundle {
        mesh: mesh,
        transform: Transform::from_translation(Vec3::new(0.0, 0.0, 0.0)),
        ..Default::default()
    });
Run Code Online (Sandbox Code Playgroud)

rust bevy

18
推荐指数
1
解决办法
1万
查看次数

我应该如何处理(变形)opengl中的4D对象?

我想尝试编写类似于4D玩具的游乐场,所以我开始学习opengl。
根据我目前的理解,人们将VBO和统一的转换矩阵用于大多数静态对象
(例如立方体,骨骼动画等,通常只涉及转换)。

我还听说,模型之间的变形也使用VBO来缓存两个模型,因为这两个模型都可以很好地定义并且不需要太多的中间步骤。

但是在上面提到的4D玩具中,物体会发生变形并被大量裁剪。
而且很可能没有定义的模型,并且两者之间有很多转换。
(现在可能是一个简单的正方形,一个尖刺的球在以后被切成两半)。
在这种情况下,每帧更新顶点VBO或顶点数组(我在另一个问题中看到)是合适的解决方案吗?

opengl graphics geometry rendering 4d

3
推荐指数
1
解决办法
1068
查看次数

标签 统计

geometry ×2

4d ×1

bevy ×1

graphics ×1

math ×1

opengl ×1

pseudocode ×1

rendering ×1

rust ×1