#球体 #装箱 #几何 #对象 #优化 #球体装箱

球牛

球牛:任意几何中的高体积分数球体装箱

5 个版本

0.1.4 2021年2月12日
0.1.3 2021年2月11日
0.1.2 2018年10月29日
0.1.1 2018年1月22日
0.1.0 2018年1月21日

#1349 in 算法

每月 29 次下载
用于 sphere_pack_from_json

MIT/Apache

49KB
764

球牛

高体积分数球体装箱库

Crates.io Docs.rs Travis-ci Codecov FOSSA Status

基于 Valera 等人提出的推进前沿算法,参见 《计算颗粒力学 2》161 (2015)

一个农场牛奶产量低,因此农场主写信给当地大学,请求学术界帮助。组成了一支跨学科教授团队,由一位理论物理学家领导,进行了两周的现场调查。学者们随后返回大学,笔记本里装满了数据,报告的撰写任务留给了团队负责人。不久后物理学家回到农场,对农场主说:“我有解决方案,但只在真空中的球形牛的情况下适用”。

使用方法

完整文档可以在 docs.rs 找到。

一个简单的例子,将半径为(0.1..0.2)的球体装箱到半径为2的容器球中。

use spherical_cow::shapes::Sphere;
use rand::distributions::Uniform;
use nalgebra::Point3;

fn main() {
    let boundary = Sphere::new(Point3::origin(), 2.0).unwrap();
    let mut sizes = Uniform::new(0.1, 0.2);

    let spheres = spherical_cow::pack_spheres(boundary, &mut sizes).unwrap();

    println!("Number of spheres: {}", spheres.len());
}

更详细的例子可以在 examples 目录中找到。

输出

正如其名,确实可以构建一个球形牛

spherical cow in vacuum

您可以从 show_in_cow 运行此示例。

示例用例

这篇论文给出了两个真实世界的用例

  1. 将球体填充到颅骨模型中,以研究由于冲击和穿透物体导致的骨折。
  2. 将球体填充到切割工具中,以确定当工具在负载下时的失效/断裂点。

编写这个库的初衷是为了优化可充气空间栖息地的布局,这些栖息地可能有一天将在月球和火星上建造。

许可协议

根据您的选择,在Apache License,版本2.0或MIT许可证下许可。除非根据这些条款,否则这些文件不得复制、修改或分发。

FOSSA Status

深度链接依赖项

wayland-protocols库(在MIT许可证下发布)用于kiss3dobj,这两个都只存在于本项目的示例目录中(因此不是库的一部分)。其中内容:文件misc/server-decoration.xml,版权(C)2015 Martin Gräßlin,在GNU Lesser General Public Library,版本2.1下许可。您可以在https://gnu.ac.cn/licenses/lgpl-2.1.en.html找到此许可证的副本。

依赖项

~4.5MB
~94K SLoC