小编Kar*_*arl的帖子

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

我对在尺寸为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
查看次数

Android - “firebase.test.lab”设置无法从 Firebase 分析中排除 Play 商店测试活动

每次将新版本上传到 google Play 商店时,我都会在大约 10 分钟内获得大约 8 个新用户登录我的 Firebase 分析控制台。我还没有公开发布我的应用程序,它处于封闭测试轨道,没有其他人选择加入。唯一可能的原因似乎是谷歌的内部测试,例如发布前报告。这些数字真的会弄乱我的分析数据,所以我想从 Firebase 分析中排除这个测试流量。

在遵循这些先前问题中的建议之后,不幸的是,没有提到的解决方案成功地排除了测试活动

在我的 AndroidManifest.xml 中应用程序标记的第一行之后,我有:

<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
Run Code Online (Sandbox Code Playgroud)

在我的 MainActicity 的 onCreate() 开始时,我有:

if(!isTestDevice(this))
{
    FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

我有以下功能:

public static boolean isTestDevice(Context context) {
    String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
    return "true".equals(testLabSetting);
}
Run Code Online (Sandbox Code Playgroud)

一开始我以为isTestDevice函数可能工作不正常,于是在我的主屏幕上添加了以下调试代码:

if(isTestDevice(linearLayout.getContext())) {
    TextView testText = new TextView(linearLayout.getContext());
    testText.setText("TEST DEVICE");
    testText.setId(linearLayout.generateViewId());
    linearLayout.addView(testText, 0, params);

    TextView disabledText = new TextView(linearLayout.getContext());
    disabledText.setText("Analytics disabled");
    disabledText.setId(linearLayout.generateViewId()); …
Run Code Online (Sandbox Code Playgroud)

android google-analytics firebase firebase-test-lab

8
推荐指数
1
解决办法
330
查看次数

在 .cshtml razor 视图中对 npm 包内的组件使用 @html.React()

我有一个使用 razor 视图的 .NET Core 3.1 ASP.Net 项目。

我在这些 razor 视图中使用 React 组件,方法是将 app.UseReact() 添加到我的startup.cs,然后在 .cshtml 文件中调用 @html.React("myComponent") 。我没有使用 React 作为 SPA。

当我在 Web 项目中的 .tsx 文件中有“myComponent”时,这种方法工作得很好。

我的公司希望将其中一些 React 组件转移到 npm 包中,以便它们可以跨项目重复使用。将“myComponent”的 .tsx 文件移动到 npm 包并引用 package.json 中的包后,运行项目时出现错误“myComponent”未定义。

我已经运行了 npm install,我可以看到“myComponent”的包和 .tsx 文件位于项目的 node_modules 文件夹中,但我猜测 asp.net mvc 不知道在那里查找当我在 .cshtml 文件中调用 @html.React("myComponent") 时,对于组件。

我需要做什么才能让 ASP.NET 找到该组件?我需要以某种方式显式导入它吗?

目前,我已经成功地通过了一个肮脏的黑客手段。我使用预构建脚本将组件的 tsx 文件从 node_modules 文件夹复制到 ClientApp 文件夹中,以便它与项目的其他 React 组件一起放置。但这并不理想,因为其他开发人员可能没有意识到它正在被复制到那里,并且如果他们想要进行更改,则尝试编辑它,而实际上他们应该编辑 npm 包中的文件。

c# asp.net razor npm reactjs

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