Algorithm 算法:如何将较小的球体分散到大球体内的一个方向

Algorithm 算法:如何将较小的球体分散到大球体内的一个方向,algorithm,math,3d,Algorithm,Math,3d,我正在尝试编写一个C源代码可视化程序,我希望用球体内部的球体绘制出函数层次结构 对于一个简单的示例,在如下代码中: #include "stdio.h" int pow(int base, int power) { while(--power) { base*=base; } return base; } int checkOdd(int i) { if (i%2==0) return 0; else return 1; } int

我正在尝试编写一个C源代码可视化程序,我希望用球体内部的球体绘制出函数层次结构

对于一个简单的示例,在如下代码中:

#include "stdio.h"

int pow(int base, int power) {
    while(--power) {
        base*=base;
    }
    return base;
}

int checkOdd(int i) {
    if (i%2==0) return 0;
    else return 1;
}

int checkPrime(int i) {
    int j = i;
    if (!checkOdd(i)) {
        return 0;
    }
    for(j=1; j<i/2; j++) {
        if (i%j==0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int a = 3;
    int b = 2;
    int res = pow(a,b);
    int bl = checkPrime(res);
    printf("%d",res);
    return 1;
}
作为主函数的最大球体内部有两个函数,pow和checkPrime,它们是main球体内部的两个球体。Checkprime函数的球体中有checkOdd的球体

我希望这样子球体在较大球体的一侧聚集在一起,因为我希望留出一些空间来放置其他东西。但是,球体不得相互接触,球体的半径是预先确定的,不能更改以适应精确的绘图。我需要一个算法来确定完美的中心坐标,这将允许较小的球体在收集到较大球体的一侧时不相互接触

我有一个3D向量,它显示了较小球体必须集中的方向,从较大球体的中心看。在图片的例子中,我的3D向量在2D意义上是朝下的,看着屏幕

目前,我的算法通过将球体的中心分散在投影到较大球体表面上的圆周围来实现这一点,但由于球体重叠,该算法失败。有谁能给我一个方法,在大球体中把小球体分散到一个方向上


我正在使用OpenGL,我准备了一个函数,可以通过输入中心坐标和半径来绘制那些透明的网格球体。在设计此算法时,我知道父球体的中心和半径。

从较大球体中的一个点看,所有位于同一方向的球体对您意味着什么?内部球体不是均匀分散,而是朝着特定方向聚集。图中显示,我试图从int main的写入点开始,在右下角的方向上隔开球体。这看起来像是装箱问题。。。。我认为你的方法行不通,因为对于更复杂的程序,你无论如何都会在空间方面遇到问题。。。。相反,试着向后做1。从没有递归开始,现在球体中没有球体…除了粗糙2的主体。创建所有者球体内所有球体及其相对半径的列表。3.尽量把它们放在尽可能小的地方。找到边界球体5。重新缩放全部以匹配绑定球体所需的半径6。递归地处理递归。。。这远非解决方案,但我会这样开始。我如何计算子球体的中心坐标,使它们在父球体的有限区域内均匀分布?有数学方法吗?如果你对这个区域的意思只有模糊的概念,那么你就不能期望使用非常精确的东西。要求算法能够解决非常困难的装箱问题是个坏主意。相反,您可能会对球体的大小有点灵活,并使用物理引擎使球体被区域中的某个点吸引并相互排斥。这将是一种爬山方法,因此您可能从不同的起点获得不同的结果。