技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1213|回复: 6
收起左侧

球面上的小球排列问题

[复制链接]

1

主题

1

帖子

21

积分

用户组: 初·技术宅

UID
8094
精华
0
威望
2 点
宅币
16 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2022-10-20
发表于 2022-10-20 11:23:11 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

x
假设有半径 n 的大球,n 是正整数,和半径 1 的小球,
问大球表面最多可以放多少小球
(指大球和小球都是刚体,每个小球和大球都接触)

假设M(n)是半径 n 的大球表面最多可以放置的小球数量,
针对 n = 1..10 计算 M(n)
回复

使用道具 举报

0

主题

25

帖子

570

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
211 个
贡献
110 次
宅之契约
0 份
在线时间
24 小时
注册时间
2021-9-11
发表于 2022-10-20 17:29:13 | 显示全部楼层
这是几何题

1096

主题

2694

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
679 点
宅币
23055 个
贡献
46153 次
宅之契约
0 份
在线时间
2190 小时
注册时间
2014-1-26
发表于 2022-10-20 18:39:59 | 显示全部楼层
粗略计算,先求出大球的表面积,然后按每个小球占用的面积为一个边长 2 的等边三角形面积来算,用大球表面积去除以等边三角形的面积,向下取整,即可估算。
但目测实际能放下的球数量比这个数值小一点。大球越大,计算结果可能越接近于正解。

daqiu.PNG

daqiuxiaoqiu.PNG

13

主题

31

帖子

403

积分

用户组: 中·技术宅

UID
6266
精华
5
威望
37 点
宅币
243 个
贡献
30 次
宅之契约
0 份
在线时间
18 小时
注册时间
2020-9-26
发表于 2022-10-20 18:52:42 | 显示全部楼层
本帖最后由 usr 于 2022-10-20 19:15 编辑

试试这个:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <math.h>

#define PI (3.14159292653f)

int M(int n)
{
	return floor(PI * (n + 1) * (n + 1));
}

void main()
{
	int n;
	scanf("%d", &n);
	printf("%d\n", M(n));
}

[4*pi*(n+1)^2]/4
Untitled.png

0

主题

25

帖子

570

积分

用户组: 大·技术宅

UID
7437
精华
0
威望
112 点
宅币
211 个
贡献
110 次
宅之契约
0 份
在线时间
24 小时
注册时间
2021-9-11
发表于 2022-10-22 11:30:14 | 显示全部楼层
小球不可以错开放吗?  2个小球的结合部 镶进去一个小球?
也许更多我没算 大神算算

30

主题

213

帖子

2535

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1943 个
贡献
206 次
宅之契约
0 份
在线时间
406 小时
注册时间
2016-7-12
发表于 2022-11-2 03:44:34 | 显示全部楼层
0xAA55 发表于 2022-10-20 18:39
粗略计算,先求出大球的表面积,然后按每个小球占用的面积为一个边长 2 的等边三角形面积来算,用大球表面 ...

小球球心共球面,要求这个共球面的面积才行

30

主题

213

帖子

2535

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1943 个
贡献
206 次
宅之契约
0 份
在线时间
406 小时
注册时间
2016-7-12
发表于 2022-11-2 03:58:38 | 显示全部楼层
本帖最后由 Ayala 于 2022-11-2 04:10 编辑

先计算小球球心共球面面积                S0 =  4*(大球半径+小球半径)^ 2 * PI
计算3球球心等边弧面面积约度(三角形)        S1 = 小球半径 * 小球半径 * sqrt(3)    ;实际面积比这个大,具体数值需要去积分
计算容纳约数                        n  = 向上取整((S0 - S1)/ S1)* 3 + 1              ;约度计算,先排除一个容纳三球的空间,这个3球空间可以容纳一个球

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2022-12-9 02:35 , Processed in 0.035495 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表