之前看了别人的一份源码,讲到了球体表面平均分割点,于是也好奇去查了一下算法,自己写不出来,借用算法在unity写了一个小demo

using UnityEngine;
using System.Collections;public class DistrbutedPointsOnSphere : MonoBehaviour {public Camera camera;/// <summary>/// 父级 -- 球/// </summary>public Transform parent;/// <summary>/// 预设 -- 球/// </summary>public GameObject prefab;public Transform[] kids;// Use this for initializationvoid Start () {CalualteSphere();}// Update is called once per framevoid Update () {if (!Input.GetMouseButton(0))return;float fMouseX = Input.GetAxis("Mouse X");float fMouseY = Input.GetAxis("Mouse Y");parent.Rotate(Vector3.up, -fMouseX * 2, Space.World);parent.Rotate(Vector3.right, fMouseY * 2, Space.World);for (int i = 0; i < kids.Length; i++)kids[i].LookAt(camera.transform);}/// <summary>/// 平均分成的等份/// </summary>int N = 50;/// <summary>/// 小球的半径/// </summary>float size = 0.5f;/// <summary>/// 球体表面平均分割点/// </summary>void CalualteSphere(){float inc = Mathf.PI * (3.0f - Mathf.Sqrt(5.0f));float off = 2.0f / N;//注意保持数值精度kids = new Transform[N];for(int i=0;i<N;i++){float y = (float)i * off - 1.0f + (off / 2.0f);float r = Mathf.Sqrt(1.0f - y * y);float phi = i * inc;Vector3 pos=new Vector3(Mathf.Cos(phi)*r*size,y*size,Mathf.Sin(phi)*r*size);GameObject tempGo = Instantiate(prefab) as GameObject;tempGo.transform.parent = parent;tempGo.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);tempGo.transform.localPosition = pos;tempGo.SetActive(true);kids[i]=tempGo.transform;}}/// <summary>/// 点击小球,将他移动到中心点/// </summary>/// <param name="pos">小球的自身位置</param>void ClickLittleSphere(Vector3 pos){Vector3 vec301 = pos - Vector3.zero;Vector3 vec302 = camera.transform.position - parent.transform.position;parent.rotation = Quaternion.FromToRotation(vec301, vec302);}
}

unity 球体表面平均分割点相关推荐

  1. Unity 球体表面平均分割点

    看到这个切割算法,不错,就拿来主义了,呵呵呵 using UnityEngine; using System.Collections;public class DistrbutedPointsOnSp ...

  2. 计算一个球的体积的程序HTML,【编程1小时】球体表面积和体积计算

    球体是生活中最常见的几何图形,乓乓球.篮球.足球都是球体.球体的表面积和体积计算公式如下: 编写程序,根据输入的球体半径,计算球体的表面积和体积是多少. 图  输出球体的表面积和体积 相关技能学习区 ...

  3. 【沐风老师答疑系列】3DMAX如何实现有孔球体表面的均匀散布?

    [沐风老师答疑系列]3DMAX如何实现有孔球体表面的均匀散布? [提问]这个提问是来自百度知道网友提问,原问题截图如下: [简单分析]3DMAX提供了将源对象散布到分布对象表面的命令,在这个问题中只是 ...

  4. chatgpt赋能python:Python计算球体表面积和体积

    Python计算球体表面积和体积 如果您需要计算球体的表面积和体积,那么Python可以成为您的助手.Python在科学计算领域中越来越受欢迎,因为它是一个灵活且易于使用的语言.Python拥有大量的 ...

  5. unity球体添加光源_Unity渲染路径——光源种类

    在之前的实践场景中,一般只有一个光源且光源类型是平行光.但实际光源类型不止一种,且需要被区别对待. 光源种类 在之前的文章中多多少少地提到了Unity中支持几种不同的光源,其中包括点光源(point ...

  6. 请问如何确定椭球体表面任意一点的坐标?

    由于建模需要在直角坐标系构建了一个如上图椭球体,想问问各位大佬我该如何在直角坐标系确定表面任意一点的坐标?

  7. Problem D. S03-05 计算球体表面积和体积

    编程计算并输出球的体积和表面积,球的半径rr的值由系统给出. 输入 球体的半径rr,是一个双精度浮点数 输出 球体的表面积与体积,这两个都为浮点数,中间用换行符/n/n隔开,要求误差小于0.0010. ...

  8. unity 在移动平台中,文件操作路径详解

    转载于http://www.unitymanual.com/thread-23491-1-1.html 一.在项目根目录中创建Resources文件夹来保存文件. 可以使用Resources.Load ...

  9. unity球体添加光源_关于Unity中的光源

    一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...

  10. 用多边形近似球体表面(icosphere)的Mesh数据的生成并使用openGL绘制

    这里用到的Mesh数据结构如果不清楚可以参照我的上一篇. 参考了一个牛人的文章, 他的代码是C#的,我用C++改写了一遍,为了便于理解,省去了他的cache优化. 创建网格球面 一般3D球体的建模有两 ...

最新文章

  1. 2020长沙“科技之星”榜单重磅揭晓,近百家企业凭实力“出道”!
  2. 2021-04-17 安装Ubuntu18.0.4 的深度学习训练服务器
  3. 数据驱动车主 App 产品优化,轻松搞定用户体验与转化
  4. Spring学习笔记十二---泛型依赖注入
  5. openlayers添加按钮_OpenLayers3加载常用控件使用方法详解
  6. AD 画板知识 mil和mm换算(硬件每日一题)
  7. 水晶易表Xcelsius 2008安装常见问题小结
  8. 关于 cdn、回源等问题一网打尽
  9. 帮室友写的表白程序 Python打包成exe文件
  10. html5 图片羽化,课题:html5图像羽化(不规则区域羽化,feather,html5羽化)
  11. VSCode 连接 Linux 远程服务器
  12. 通过 iso 重装阿里云 ECS
  13. 【Java】文如何制作帮助文档
  14. 计算机win7内容已满,win7c盘满了用了50G了怎么办
  15. Kubeadm 快速搭建 k8s 集群安装可视化管理界面
  16. Oracle培训课件
  17. config类和config助手函数
  18. windows10配置php环境 phpStudy+PhpStorm
  19. Code-Behind技术
  20. 机器运算知识点计算机组成原理,计算机组成原理知识点有哪些

热门文章

  1. 腾讯的“小弟”长大了
  2. cdr宏教程_cdr软件怎么使用宏批量导出文件?
  3. clip gradient
  4. LINUX论坛快速搭建(小白版)
  5. 关于jsp页面上无法显示图片的问题
  6. 话费充值api接口 手机话费充值功能接入
  7. php过滤只匹配中英文字符串
  8. 前端工作日记day2
  9. Jenkins修改Job工作空间、修改日志路径
  10. 关于win7快速启动栏以及显示桌面功能的还原