using UnityEngine;
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.IO;

public class NewBehaviourScript : MonoBehaviour {

// Use this for initialization
void Start () {

var stream = new FileStream("C:\\shuju2.data", FileMode.Open);
var reader = new StreamReader(stream);
var list1 = new List<String>();
var list2 = new List<String>();
while (!reader.EndOfStream)
{
var content = reader.ReadLine();
var result = content.Split(new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
list1.Add(result[0]);
list2.Add(result[1]);
}
int length = list1.Count;
double[] x = new double[length];
double[] y = new double[length];
double[] z = new double[length];
for (int i = 0; i < length; ++i)
{
x[i] = double.Parse(list1[i]);
y[i] = double.Parse(list2[i]);
z[i] = double.Parse(list2[i]);
}
reader.Close();
stream.Close();

double Pi = 3.1415926f;
double[] th = new double[100];
for (int i=0; i<100; ++i)
th[i] = i * 2 * Pi / 100;
double [,] R = new double[100, length];
double [,] TH = new double[100, length];
double [,] X = new double[100, length];
double [,] Y = new double[100, length];
double [,] Z = new double[100, length];
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
R[i,j]=x[j];
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
TH[i,j]=th[i];
for(int i=0;i<100;++i)
{
for(int j=0;j<length;++j)
{
X[i,j]=R[i,j]*System.Math.Cos(TH[i,j]);
Y[i,j]=R[i,j]*System.Math.Sin(TH[i,j]);
}
}
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
Z[i,j]=z[j];
double max = 0;
for(int i=0;i<length;++i)
{
for(int j=0;j<100;++j)
{
if(Z[j,i]>max)
max=Z[j,i];
}
}
Vector3[] vertices = new Vector3[length*100];
for (int i=0; i<100; ++i)
{
for(int j=0;j<length;++j)
{
vertices[i*length+j].Set((float)X[i,j],(float)Y[i,j],(float)Z[i,j]);
}
}
int [] triangles = new int[101*length*2*6];

int triangles_count =0;
for (int i=0; i<100; ++i)
{
for (int j=0; j<length-1; ++j)
{
if(i==99)
{
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+1;
triangles[triangles_count++]=j+1;
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=j+1;
triangles[triangles_count++]=j;
}
else
{
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+1;
triangles[triangles_count++]=i*length+j+1+length;
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+length+1;
triangles[triangles_count++]=i*length+j+length;
}

}
}

gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();

Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.vertices = vertices;
mesh.triangles = triangles;
gameObject.renderer.material.color = new Color(1.0f,0.0f,0.0f,0.5f);
GetComponent<MeshRenderer>().material.shader = Shader.Find("Transparent/Diffuse");

//CreateCube ();
}

// Update is called once per frame
void Update () {

}
void CreateCube()
{
gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();
Vector3[] vertices = new Vector3[3];
int [] triangles = new int[3];
vertices [0].Set (0, 0, 0);
vertices [1].Set (0, 1, 0);
vertices [2].Set (0, 0, 1);
triangles [0] = 0;
triangles [1] = 1;
triangles [2] = 2;
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.vertices = vertices;
mesh.triangles = triangles;
}
}

测试数据 shuju2.data

1.62529962517393e-001 5.03736912948521e-002
3.32069364646237e-001 6.05343235585258e-002
5.17768012863151e-001 8.10546107796976e-002
6.79262708210035e-001 1.11986927351479e-001
8.56916649644989e-001 1.53278898880759e-001
1.08296453031517e+000 1.63366206994076e-001
1.30096770420339e+000 1.94225199415502e-001
1.47864957864801e+000 2.56278380374267e-001
1.71281199862430e+000 2.97497027753191e-001
1.90666708566181e+000 3.80290468384198e-001
2.04397179464350e+000 4.32015419021332e-001
2.22971234237490e+000 4.83677520386733e-001
2.41546685661113e+000 5.45720226466876e-001
2.61736665043061e+000 6.07741982789774e-001
2.79504852487522e+000 6.69795163748540e-001
2.94043984015335e+000 7.31890244221795e-001
3.15046813978376e+000 8.35423944525043e-001
3.32013324045608e+000 9.39010019221402e-001
3.50590172119714e+000 1.01143333001629e+000
3.66745228256334e+000 1.08388806544704e+000
3.81284359784148e+000 1.14598314592030e+000
3.97436622619802e+000 1.19767667192156e+000
4.09552565559647e+000 1.24942257231594e+000
4.21674095101423e+000 1.34269089156929e+000
4.33792831342234e+000 1.41519800139316e+000
4.45109890205814e+000 1.52923800495462e+000
4.57231419747590e+000 1.62250632420797e+000
4.70971667199140e+000 1.74689550784830e+000
4.78248216215461e+000 1.82984607165864e+000
4.86336219162394e+000 1.94392797473459e+000
4.97658864627906e+000 2.09949039715502e+000
5.04133736266998e+000 2.22397385470296e+000
5.10605814605123e+000 2.32769610282141e+000
5.18693817552056e+000 2.44177800589736e+000
5.21948013177397e+000 2.62858699124824e+000
5.30037412774813e+000 2.75304949903893e+000
5.34904739707995e+000 2.92945692991782e+000
5.39777653243110e+000 3.14738677965569e+000
5.41422907512059e+000 3.37573913362279e+000
5.41446650570270e+000 3.55220941377342e+000
5.39860055621605e+000 3.75984245782552e+000
5.39072344749205e+000 3.90518139871054e+000
5.32630992721705e+000 4.02983245431644e+000
5.15693812314616e+000 4.14423907862968e+000
4.97947971277883e+000 4.24827557310680e+000
4.81006600919345e+000 4.33154038327581e+000
4.57604325426546e+000 4.39412778304431e+000
4.36616858618817e+000 4.40478073460324e+000
4.12400335894441e+000 4.41547558567665e+000
3.93830471072750e+000 4.39495529845548e+000
3.73641888341286e+000 4.34331414684732e+000
3.52648834931625e+000 4.31244467954728e+000
3.35687911466326e+000 4.25038102370989e+000
3.17111063392220e+000 4.17795771291500e+000
2.99341479297275e+000 4.10552392724149e+000
2.84803744419945e+000 4.05380945148298e+000
2.70257629639717e+000 3.93981134743601e+000
2.56524365440582e+000 3.86732518736939e+000
2.42791101241448e+000 3.79483902730277e+000
2.31475439028350e+000 3.69117962845606e+000
2.20165363417185e+000 3.62904264846831e+000
2.12084343722667e+000 3.56686376896608e+000
2.04000530727184e+000 3.48392368003436e+000
1.95919511032666e+000 3.42174480053212e+000
1.86225360030307e+000 3.36996747550188e+000
1.79757471643631e+000 3.29738704152766e+000
1.68448792682948e+000 3.24563066625465e+000
1.61976714344823e+000 3.14190841813621e+000
1.55508825958146e+000 3.06932798416198e+000
1.48232276941824e+000 2.98637742035164e+000
1.39338406666213e+000 2.88268659686906e+000
1.28025537754081e+000 2.79978840745183e+000
1.21553459415956e+000 2.69606615933338e+000
1.13465456469023e+000 2.58198425625743e+000
1.06993378130898e+000 2.47826200813898e+000
1.00524093093738e+000 2.39530096945002e+000
9.24360901468054e-001 2.28121906637407e+000
8.67656891859099e-001 2.13596392451802e+000
7.70645549311364e-001 2.03228357591406e+000
6.81637014031100e-001 1.87668972885777e+000
6.16902264145014e-001 1.76258687602457e+000
5.36022234675689e-001 1.64850497294863e+000
4.46943866871276e-001 1.44100810231861e+000
3.17488333603934e-001 1.22318300136697e+000
1.47488036815707e-001 8.70462413516783e-001

unity3d 通过代码建立曲面的更多相关文章

  1. Unity3d 使用DX11的曲面细分

    Unity3d surface Shaderswith DX11 Tessellation Unity3d surface shader 在DX11上的曲面细分 I write this articl ...

  2. Spine输出资源一键入Unity3D工具代码

    之前预研过2D骨骼动画编辑工具SPINE,感觉其比cocosStudio及Unity3D自带的骨骼动画编辑器(原生Sprite Tree或Uni2D)要更适合有3DSMax习惯的美术,即Spine更容 ...

  3. 【跟我一起学Unity3D】代码中分割图片而且载入帧序列动画

    在Cocos2dx中.对大图的处理已经封装好了一套自己的API,可是在Unity3D中貌似没有类似的API(好吧,实际上是有的,并且功能更强大),或者说我没找到. 只是这也在情理之中,毕竟Unity3 ...

  4. Unity3D常用代码总结

    1 GUI汇总 function OnGUI() { GUI.Label(Rect(1,1,100,20),"I'm a Label"); //1 GUI.Box(Rect(1,2 ...

  5. python一句代码建立树

    from collections import defaultdict def tree(): return defaultdict(tree) 上面的代码不难理解,就是利用递归的方式,创建了一个树的 ...

  6. kbengine Unity3d demo 代码执行流程(4)

    当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...

  7. Unity3D常用代码集合

    1.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){         if(theCollision.gameObject.n ...

  8. unity3d优化-代码篇(不定期更新)

    1.Update 大多数情况是需要在update中处理很多逻辑的,然而unity3d底层是c/c++编写,逻辑层是c#,通过monobehaviour挂载于对象中,实现一些unity3d接口的重载. ...

  9. Unity3d 常用代码

    //创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...

随机推荐

  1. 普林斯顿数学指南(第三卷) (Timothy Gowers 著)

    第V部分 定理与问题 V.1 ABC猜想 V.2 阿蒂亚-辛格指标定理 V.3 巴拿赫-塔尔斯基悖论 V.4 Birch-Swinnerton-Dyer 猜想 V.5 卡尔松定理 V.6 中心极限定理 ...

  2. Visual Studio不显示智能提示代码,快捷键Alt+→也不出现

    最近安装了Dev Express的控件,我的vs2017 Enterprise版的环境,智能提示补全代码的快捷键功能,好像被修改了,不能使用了. 我原来的时候,比如在代码中输入如下代码: Consol ...

  3. PowerDesigner学习 ---- 系列文章

    一.PowerDesigner概述(系统分析与建模) 二.项目和框架矩阵 三.企业架构模型 四.业务处理模型 五.概念数据模型(CDM生成LDM,PDM和OOM) 六.物理数据模型(PDM逆向工程) ...

  4. Spring5 新特性

    Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 最大特点之一是响应式编程(Reactive Programming). 响应式编程核 ...

  5. redis之 Redis持久化配置

    Redis持久化配置 Redis的持久化有2种方式   1快照  2是日志 Rdb快照的配置选项 save 900 1      // 900内,有1条写入,则产生快照 save 300 1000   ...

  6. 将 vue 挂在 window 对象上,实现能调用 elementUI 的组件

    html 部分: <div id="sample"> </div> js 部分(将js代码放在 body 的 onload事件中: <body onl ...

  7. mysql查询各个知识点

    临时表 group by http://www.ywnds.com/?p=10174 https://blog.csdn.net/wuseyukui/article/details/72627667 ...

  8. makedepend: command not found(转)

    makedepend: command not found 解决方案: 修改Makefile MAKEDEPEND=$(CC) -M 参考: When I set CROSS_COMPILE, `MA ...

  9. Oracle 增加、修改、删除字段

    分别对T_USER表 进行增加name字段, 修改name字段,删除name字段 /*增加列表*/ ALTER TABLE T_USERS ADD name varchar2(512) ; /*删除列 ...

  10. xml.sax 笔记

    from xml.sax import saxutils html_str = """<!DOCTYPE html> <html> <hea ...