教程:抛物线的画法

时间:2022-12-18 13:07:22 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
Unity3D教程:抛物线的画法

Posted on 20130709 by U3d / Unity3D 基础教程/被围观 55

抛物线公式y=a*x*x+b*x+c;a>0,开口向上;a<0,开口向下。b=0,抛物线对称轴为y轴。c=0,抛物线经过原点。获取一些抛物线上的点,然后相邻的两点和原点画三角面,这样可以用三角面拼成了“抛物面”了,而且还可以通过修改a的值来改变小山峰的陡峭程度。下面来看看代码吧!

新建一个空的GameObject,然后绑定Parabola.js脚本就ok了。

Parabola.js



01 private var a:int;//a>0,开口向上;a<0,开口向下。 02

03 private var b:int;//b=0,抛物线对称轴为y 04

05 private var c:int;//c=0,抛物线经过原点 06

07 private var size:int; 08

09 function Start () { 10

11 a=-1; 12

13 b=0; 14

15 c=0; 16

17 size=22; 18

19 gameObject.AddComponent("MeshFilter"); 20

21 gameObject.AddComponent("MeshRenderer"); 22

23 var mesh : Mesh = GetComponent(MeshFilter).mesh; 24

25 mesh.Clear(); 26

27 var v:Vector3[]=new Vector3[size]; 28




29 var v2:Vector2[]=new Vector2[size]; 30

31 var index:int []=new int[(size-2)*3]; 32

33 for(var i:int=0;i<size;i++){ 34

35 if(i==0) 36 {

37 v[i]=Vector3(0,-1,0); 38

39 } 40 else 41 {

42 var x:float=(i-size/2)*0.1; 43

44 v[i].x=x; 45

46 v[i].y=a*x*x+b*x+c; 47

48 v[i].z=0; 49 } 50

51 if(i>1){ 52

53 index[3*i-6]=0; 54

55 index[3*i-5]=i-1; 56

57 index[3*i-4]=i;

58 //Unity3D教程手册:www.unitymanual.com 59 } 60

61 print("v["+i+"]="+v[i]); 62 } 63

64 mesh.vertices = v; 65

66 mesh.uv = v2; 67

68 mesh.triangles = index; 69

70 for(var j:int=0;j<index.Length;j++){ 71

72 print(j+"=="+index[j]); 73 } 74

75 }




本文来源:https://www.wddqw.com/doc/51313980d2f34693daef5ef7ba0d4a7303766c58.html