美文网首页
在球面上“均匀”分布物体

在球面上“均匀”分布物体

作者: 墨明_棋妙 | 来源:发表于2017-06-22 18:29 被阅读258次

在一个球体上均匀分布多个prefab。方法:
球面上坐标满足x2+y2+z^2=R。以y轴向上为例
x = R * sin(alpha)cos(beta);
y = R * cos(alpha);
z = R * sin(alpha)
sin(beta);

在unity实现:

public class DistributeLight : MonoBehaviour
{

    // Use this for initialization
    public GameObject prefab;
    public int alphaStep = 12;
    public int betaStep = 4;

    public float R = 5.0f;

    float Deg2Rad (float angle)
    {
        float rad = angle * Mathf.PI * 2 / 360;
        return rad;
    }

    void CaculateSpherePosition ()
    {
        float alpha = 360.0f/alphaStep;
        float beta = 360.0f/betaStep;
        List<Vector3> posList = new List<Vector3> ();
        posList.Clear ();
        for (float i = 0.0f; i < 90.01f; i = i + alpha)
        {
            if (i == 0.0f)
            {
                Vector3 p = new Vector3 (0.0f, R, 0.0f);
                posList.Add (p);
                continue;
            }

            float R2 = R * Mathf.Sin (Deg2Rad (i));

            for (float j = 0.0f; j < 360.0f; j = j + beta)
            {
                Vector3 p = new Vector3 (R2 * Mathf.Cos (Deg2Rad (j)), R * Mathf.Cos (Deg2Rad (i)), R2 * Mathf.Sin (Deg2Rad (j)));
                posList.Add (p);
            }
            //step += 4;
        }
    
        int ii = 0;
        foreach (Vector3 pos in posList)
        {
            GameObject temp = Instantiate (prefab) as GameObject;
            temp.name = temp.name + ii;
            ii++;
            temp.transform.localPosition = pos;
            temp.transform.LookAt (new Vector3 (0, 0, 0));
            Debug.Log (pos);
        }
    }

    void Start ()
    {
        CaculateSpherePosition ();
    }
    
    // Update is called once per frame
    void Update ()
    {
        
    }

结果长这样:


image.png

相关文章

  • 在球面上“均匀”分布物体

    在一个球体上均匀分布多个prefab。方法:球面上坐标满足x2+y2+z^2=R。以y轴向上为例x = R * s...

  • iOS swift实现一个soul APP的星球

    先来看实现的效果: 在空间中构建一个球形,并将子视图均匀的分布在球面上 球滚动时,球面坐标的计算 实现的思路主要来...

  • 产生在球面上均匀分布的点

    https://www.cnblogs.com/cofludy/p/5894270.html 如何产生在球面上均匀...

  • 不同物体在斜面上运动

    今天科学老师布置了一个科学实验,让我们观察不同物体在斜面上的运动轨迹。 我先准备了一个木板、两...

  • dubbo 负载均衡

    Random LoadBalance 随机,按权重设置随机概率。 在一个截面上碰撞的概率高,但调用量越大分布越均匀...

  • 商务与经济统计第六章笔记

    连续性概率分布 连续性概率函数主要有三: 均匀分布,正态分布和指数分布。 1、均匀概率分布 均匀概率密度函数 连续...

  • 《商务与经济统计》第六章笔记

    连续型概率分布 连续型该路函数分三种: 均匀分布、正太分布和指数分布 1、均匀概率分布 均匀概率密度函数 连续型均...

  • 二茂铁极性分子的作用

    在化学中,极性是指共价键或共价分子中电荷分布的不均匀性。如果电荷分布不均匀,则是极性,并且分布的均匀性是非极性的。...

  • 常见的连续型随机变量

    均匀分布 定义:若随机变量X的概率密度为则称X在区间(a,b)上服从均匀分布,记为,其分布函数为注:X在区间(a,...

  • torch.randn和torch.rand区别

    torch.rand是均匀分布torch.randn是标准正态分布 torch.rand 均匀分布 torch.r...

网友评论

      本文标题:在球面上“均匀”分布物体

      本文链接:https://www.haomeiwen.com/subject/wbgfcxtx.html