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

时间:2015-04-08 16:34:00

标签: 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 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感觉中面朝下看,面向屏幕。

目前我的算法通过将球体的中心分散在投射到较大球体表面上的圆周来产生这种效果,但是当球体重叠时它会失效。任何人都可以通过一种方法来启发我在较大的球体内将较小的球体分散到一个方向吗?

trial

我正在使用OpenGL并且我准备了一个函数,它可以通过馈送中心坐标和半径来绘制那些透明网格球体。我在设计这个算法时已经了解了父球体的中心和半径。

0 个答案:

没有答案