用unity画抛物面
来源:互联网 发布:mac怎么使用投影仪 编辑:程序博客网 时间:2024/05/18 02:20
我想用mesh画一个圆滑的小山峰,之前有高手提到用贝塞尔曲线,我研究了一下,但是还是不会,所以最后用抛物线公式来完成。抛物线公式y=a*x*x+b*x+c;a>0,开口向上;a<0,开口向下。b=0,抛物线对称轴为y轴。c=0,抛物线经过原点。获取一些抛物线上的点,然后相邻的两点和原点画三角面,这样可以用三角面拼成了“抛物面”了,而且还可以通过修改a的值来改变小山峰的陡峭程度。下面来看看代码吧,呵呵~~~
新建一个空的GameObject,然后绑定Parabola.js脚本就ok了。
Parabola.js:
private var a:int;//a>0,开口向上;a<0,开口向下。private var b:int;//b=0,抛物线对称轴为y轴private var c:int;//c=0,抛物线经过原点private var size:int;function Start () { a=-1; b=0; c=0; size=22; gameObject.AddComponent("MeshFilter");gameObject.AddComponent("MeshRenderer");var mesh : Mesh = GetComponent(MeshFilter).mesh;mesh.Clear(); var v:Vector3[]=new Vector3[size]; var v2:Vector2[]=new Vector2[size]; var index:int []=new int[(size-2)*3]; for(var i:int=0;i<size;i++){ if(i==0) { v[i]=Vector3(0,-1,0); } else { var x:float=(i-size/2)*0.1; v[i].x=x; v[i].y=a*x*x+b*x+c; v[i].z=0; } if(i>1){ index[3*i-6]=0; index[3*i-5]=i-1; index[3*i-4]=i; } print("v["+i+"]="+v[i]); } mesh.vertices = v;mesh.uv = v2; mesh.triangles = index; for(var j:int=0;j<index.Length;j++){ print(j+"=="+index[j]); }}
再来看看运行效果吧:
当a=-1时:
当a=-4时:
- 用unity画抛物面
- 用vtk画抛物面
- 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(3)——椭球抛物面
- 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(4)——双曲抛物面(马鞍面)
- 双曲抛物面
- 抛物线与双曲线、抛物面与锥面
- Unity 用GL画曲线
- 解析几何:第六章 二次曲面(2)抛物面 二次锥面 柱面 一般二次曲面
- 【Unity】Unity用图片数组播放动画
- Unity 画直线
- Unity 画三角形
- 通过unity画弧线
- Unity 画虚线
- Unity Shader 画网格
- 用Unity注入webservice
- Unity新手用Easytouch
- unity
- Unity
- 安卓开发startservice 和bindservice详解
- UITapGestureRecognizer的使用影响视图上某些控件的action的问题
- Javascript继承机制的设计思想
- 找不到mysql.sock,mysql.sock丢失问题解决方法
- Apache+JK+Tomcat实现负载均衡
- 用unity画抛物面
- svn 服务器的android代码如何同步 git服务器上的patch
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- 推荐一个新的技术网站OutOfMemory.CN
- [ubuntu12.04] u盘全自动安装 ubuntu server 12.04
- V4L2应用程序框架
- Oracle数据泵的使用
- cocos2d-x加载图片显示不清晰
- Windows Azure Web Site最酷的五个特性