kastin 发表于 2021-1-1 13:20:45

随机圆(球)问题

问题A:在二(三)维空间中,给定区域 `D` 内(为简单起见,仅考虑矩形空间)随机分布 `n` 个圆(球),要求它们所处的空间没有重叠(至多相切),问
1. 若半径均为 `r`,`n` 个随机圆(球)心的坐标有什么算法能求?
这一问最直接的方法就是随机生成圆(球)心坐标,保证点与点之间距离不小于 `2r`即可。但问题是当 `n` 较大时,效率不会太高,主要是前面的圆(球)心选择自由较大,后面的选择范围小,随机搜命中率不高。

2. 若半径为 `a` 到 `b`(`0 < a < b`),如何确定这 `n` 个随机圆(球)心的坐标和各自半径大小?

继续加强——

问题B:在二(三)维空间中,给定区域 `D` 内(为简单起见,仅考虑矩形空间)随机分布若干个圆(球),要求它们所处的空间没有重叠(至多相切),问:若半径为 `a` 到 `b`(`0 < a < b`)的圆(球)容积之和占区域总容积的比例系数为 `p` (`0 < p <1`),问
是否存在合适的算法给出随机圆(球)个数及圆(球)心坐标与各自半径大小?进一步,若半径限定范围有多组,且相应比例系数之和小于1,且假设给定的范围和比例系数能够保证存在至少一组满足要求的解,那前面的算法是否也能扩展使用?

继续下去,也可以将区域 `D` 改成球形空间来重新讨论上述问题。

markfang2050 发表于 2021-1-1 14:17:31

这个问题我早就写过程序了。

markfang2050 发表于 2021-1-1 14:19:05

我传图不了咋回事?

kastin 发表于 2021-1-3 13:53:30

markfang2050 发表于 2021-1-1 14:17
这个问题我早就写过程序了。

能说一下你的算法吗?

markfang2050 发表于 2021-1-3 18:23:56

    x1         y1         z1      r
2.7458   1.2923   1.7291   0.7447
4.9957   3.5080   1.1639   0.7977
2.0986   3.7244   2.0932   0.7013
1.4434   2.8462   1.0878   0.7308
3.2905   5.2613   2.2069   0.6433
3.0543   2.8944   1.5164   0.6531
0.7821   5.2322   2.0219   0.6921
4.9616   1.9642   1.2431   0.6866
4.3082   5.2276   1.1290   0.4703
1.8400   2.3010   2.5075   0.4732
3.2041   4.1244   2.4040   0.4653
2.4333   4.4287   0.7832   0.5324
4.2204   1.0812   1.8015   0.4319
2.3289   0.6776   0.4218   0.4213
5.2827   4.6992   1.8704   0.5757
0.9349   4.0740   1.7095   0.4570
0.6631   1.5277   1.2867   0.4435
0.6491   2.6086   2.4623   0.4651
3.8465   1.4022   0.6889   0.4814
0.9986   0.9540   2.0348   0.5400
0.5818   2.1635   0.5231   0.4866
0.4459   4.4122   0.4239   0.4212
4.9433   0.7976   1.0653   0.4337
3.8143   3.9851   0.4769   0.4412
2.2190   4.8101   1.6926   0.4316
1.3773   0.5626   0.9135   0.4162
5.5339   3.4812   2.3658   0.4136
5.3362   1.8269   2.3902   0.5199
5.5307   4.6247   0.7734   0.4629
2.0596   1.6910   0.8668   0.4021
4.3575   2.7058   2.1385   0.5641
3.4948   2.2396   2.5773   0.4209
3.8437   2.5350   0.5945   0.4162
4.2444   4.5456   1.7283   0.4264
1.5045   5.0871   0.9518   0.4446
3.4582   4.9776   0.5060   0.4085
0.4988   5.5156   0.4753   0.4106
2.1165   0.4187   2.3855   0.4179
4.3905   3.7578   2.4458   0.5229
0.5134   4.1988   2.4912   0.4358
5.1677   0.6478   2.2586   0.5978
2.8566   3.1985   0.4575   0.4297
2.6485   5.4488   0.5198   0.4803
3.2670   0.5837   0.6575   0.4368
2.2394   5.5539   2.5548   0.4406
2.9479   2.1498   0.5990   0.4637
4.3845   5.5347   1.9712   0.4265
4.7986   2.5457   0.5620   0.2179
5.4981   1.4751   0.6270   0.2485
0.2370   4.0786   1.4267   0.2076
5.0954   5.4146   2.5419   0.2453
2.8451   3.2840   2.6783   0.3197
1.1069   4.0455   0.5085   0.3158
4.4959   4.5963   2.5305   0.2321
4.1656   5.7696   2.7278   0.2136
0.4613   3.4514   1.6593   0.2230
3.8446   0.8300   2.5838   0.3489
2.8547   4.0498   0.2551   0.2210
0.5773   3.1945   0.7450   0.2455
4.0107   0.5164   0.8331   0.2455
5.0991   5.6439   0.6480   0.3358
5.6442   2.1839   0.5232   0.2518
1.6670   4.5059   0.6956   0.2030
4.3922   5.0078   0.3258   0.2506
0.2357   1.9902   2.0810   0.2021
0.9264   0.3449   0.4158   0.2611
3.7818   4.5906   1.1349   0.2950
2.2142   2.3347   1.4850   0.2364
1.6358   4.4908   1.4380   0.2614
4.9148   1.2796   0.2778   0.2041
0.9674   1.4853   0.6062   0.2754
2.9109   1.2095   0.3405   0.2528
0.2540   2.7298   0.8925   0.2331
5.5488   2.8873   2.1750   0.2008
2.2991   2.1045   0.3500   0.2308
0.5956   3.7288   0.4611   0.2191
4.0893   0.2737   1.4061   0.2215
0.4531   0.5393   1.1473   0.2256
3.7477   3.7106   1.5088   0.2128
3.1494   3.8168   0.5670   0.2064
5.2436   5.2277   1.1247   0.2241
1.2395   3.2780   2.1857   0.2617
1.4014   1.1927   2.7100   0.2334
3.3469   5.6236   1.1766   0.2495
4.9768   4.9853   0.5482   0.2251
1.8162   2.1657   1.7577   0.2019
3.8800   1.8437   1.6138   0.3493
1.7885   5.2352   2.1925   0.2168
1.1349   1.8368   2.3373   0.3434
1.6790   3.9270   1.1079   0.3186
2.0087   0.9555   2.7270   0.2184
1.3722   1.1600   0.4034   0.2229
5.0133   0.2835   0.5308   0.2507
4.9310   1.6976   0.3548   0.2212
4.1283   4.8962   2.6853   0.2314
3.9699   1.4839   2.5500   0.2593
3.6561   0.6258   1.3205   0.3142
3.5657   0.2936   1.8616   0.2313
5.3301   2.6438   0.2267   0.2134
0.4591   0.3248   2.5737   0.2732
5.6628   0.8565   0.6230   0.3021
2.8914   4.4018   1.4949   0.2729
4.5857   5.1334   2.6995   0.2771
0.4042   3.1230   2.0602   0.2186
4.0149   5.5131   0.3437   0.2740
4.6871   4.5766   0.6794   0.2360
4.2378   0.4030   2.3465   0.2055
0.2254   3.7138   2.0034   0.2136
1.5158   5.6116   0.2589   0.2121
5.3811   5.5125   1.6930   0.2369
2.7451   0.5604   2.6483   0.2507
3.6080   4.7390   1.6018   0.2042
3.3998   3.4363   2.7424   0.2525
1.5308   4.4682   2.3948   0.2041
0.4584   0.9986   0.5339   0.3684
4.9952   4.4369   2.6768   0.2748
2.8724   5.5280   1.2506   0.2017
0.4601   1.2426   2.6450   0.2476
4.6496   0.5385   1.5925   0.2115
0.4190   4.7904   1.1657   0.3373
1.9433   5.7009   1.1680   0.2448
2.2702   2.8365   2.6982   0.2157
1.6089   1.0761   1.6047   0.2087
2.3571   3.8417   0.2388   0.2250
1.5443   0.3223   1.8325   0.2685
3.5228   3.5264   0.9397   0.2455
1.5753   0.1722   0.5886   0.1020
0.9150   0.9365   0.2560   0.1265

markfang2050 发表于 2021-1-3 18:25:41

程序说明
--------------------------------------------------------------
1.程序功能
在长方体(d1Xd2Xd3)内均匀随机投放多级配球形骨料,达到一定体积比例。
i,某种级配的球体骨料的投放体积比例范围自设。(不超过45%,填充比例高,耗时多。)
ii,所有级配的球体骨料都不得相交(重叠)及包含,不得超出投放区域。
--------------------------------------------------------------
2.程序组成
主程序:SpherePacking.m
子程序:
在长方体内随机生成球体:CreatSphereInCube.m
判断球是否相交:dsphere.m
画球体:PlotSphere.m
页: [1]
查看完整版本: 随机圆(球)问题