作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决这个问题,其中给出了 4 个球体,以及它们的中心和初始半径:
Bi = (Ci, Wi) 其中 Ci = (xi,yi,zi) 是球体的中心,Wi 是它的初始半径。
球的半径随着参数一起连续增加,比如 a。也就是说,随着“a”从 0 增加到无穷大,任何时刻球体的半径都是 Wi + a。现在,球体是:Bi = (Ci, Wi+a)。问题是找到四个球体的(编辑的)体积相交在一起的最小值“a”。
是否有可能有效地解决这个问题,而不是为所有领域编写繁琐的数学方程式并求解“a”?
最佳答案
幸运的是,球面交点是所有类型的 3-d 交点中最简单的。如果两个球体的半径之和大于它们中心点之间的距离,则它们的体积相交。
所以解决这个问题最简单的方法是找到任何一对球体之间的最大距离(找到中心之间的距离然后减去它们的初始半径)。给定该距离,除以 2,您将得到所有球体接触的 a 值。任何大于该值的值,它们都会重叠。
现在,实际上,这并不能完全解决您的问题,即“我需要多大的 a 值才能使所有球体形成一个连贯的体积”。毕竟,如果我把球体排成一排,每个球体只需要接触最近的邻居就可以形成一个连贯的体积。因此,您仍然需要解决问题的连通图部分,但希望这足以让您入门。
关于c++ - 生长球体的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7989739/
我有一个数组和一个指向它的 slice ,如下所示: package main import "fmt" func main() { array_str := []string{"0a","1
我是一名优秀的程序员,十分优秀!