如何使用PhysX数据计算韦伯数
How can I calculate the Weber Number with PhysX data?
我正在开发一个非真实感的水渲染演示,使用PhysX作为底层物理解算器(使用它的SPH模拟),并希望添加泡沫和液滴渲染来增强其视觉效果。
首先,我使用相邻粒子的数量作为阈值,将它们分组(水、泡沫和液滴),并以不同的方式呈现每组,但阅读了一些研究论文后,我得出结论,使用更基于物理的方法会更好,因此输入韦伯数。
以下参数用于获得韦伯数,所有参数都与某个粒子或整个流体有关:
- 密度
- 相对速度(相对于周围空气)
- 特征长度
- 表面张力
密度和相对速度是由PhysX提供的,我已经得到了。虽然密度是一个浮点值,但速度是3个浮点值的矢量,每个浮点值对应3D空间的每个轴(x、y和z)。没有提供特征长度和表面张力,很难(或者如果提供了它们,我不知道如何获得)。
所以,我的问题是:
- 我相信韦伯数必须是一个浮点值,这样我就可以用它作为阈值来将粒子分组。这里的第一个问题是,要得到它,我需要使用PhysX提供的相对速度,它是一个有3个浮点值的向量。我怎样才能得到这个向量的一个浮点值,把它用在给我韦伯数的方程中
- 阅读了一些研究论文(尤其是第3.2.1节中的这篇论文),我决定使用固定值来计算颗粒的特征长度和表面张力。问题是,我应该使用哪些值,假设这些值都有理想值,我如何才能得到这些理想值
在不了解您的应用程序的情况下,通常会使用类似Weber的无量纲数将系统分类为低值或高值状态。对于这些应用程序,确切的值并不重要。重点是,高值表示情况与低值情况有质的不同。当然,当数字介于两者之间时,这就成了问题,例如,在单位附近。对系统进行分类的好处是,它可以让你进行近似,通常可以简化所涉及的公式。
由于你似乎只使用韦伯数进行分类,我认为这对你来说也很重要。
因此,从物理背景来回答你的问题,特别是考虑到你在这里的目标不是现实主义,使用近似值对情况进行分类以简化计算似乎是对韦伯(可能还有其他)等无量纲数字的很好使用。
- 对于速度,可以使用向量的绝对值
- 对于特征长度,您可能应该使用液滴/泡沫气泡的大小,因为这似乎是模型中唯一的长度度量
特别是,我不会太担心"理想价值"。近似值适用于大/小值(取决于所需的精度/真实性,例如>~10和<~0.1),因此2的因子不会对分类产生影响。如果是这样,那么该近似值无论如何都将无效。
相关文章:
- 如何计算数据类型的范围,例如int
- C++数据文件、数组和计算赋值
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- std::bad_alloc 在大数据集的 Dijkstra 计算期间
- 如何用尽可能少的数据将数据缓冲区计算为零校验和值
- 用于在C++中计算用户数据的线程
- GLSL 计算着色器 使用查找表设置缓冲区会导致不写入任何数据,与其他数据设置相同的缓冲区有效
- 我可以在计算数据计划上修复该C 程序的任何建议吗?
- 使用标准库或Boost库从一组数据中计算直方图
- 从右到左计算当前索引中的数据结构中的元素数,并打印每个元素的计数
- 以 ns3 为单位计算数据包接收时间
- 计算数据计划的最佳价格
- 如何从 for 循环创建计算数据列表
- 无法计算数据的标准偏差
- 从数组计算数据的c++问题
- 计算数据的平均值
- cv::PCA (openCV)计算数据本身的协方差矩阵?或者我们应该传递协方差矩阵给它
- 如何在运行时计算数据类型滚转之前允许的最大值
- 预先计算数据vs顺序处理