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. openresty 集成 keycloak-oauth-oidc

    keycloak 是一个比较全,而且比较方便的sso 解决方案,同时为我们提供了灵活的扩展特性 备注: 测试使用docker-compose 运行,对于keycloak 使用pg 数据库做为后端存储 ...

  2. KMPlayer速度步进设置及快捷键设置和同级视频自动加入播放列表

    速度步进设置 快捷键设置  同级视频自动加入播放列表

  3. oracle-null和默认值

    Oracle的默认值处理要当心,如果应用中使用的是ORM工具,则必须要考虑对于字段为Null的处理,必要时在ORM工具中将Null转换为default或插入时去掉值为Null的字段. 可以将下面的系统 ...

  4. 如何利用 Chrome 来模拟移动网络来调试 FastAdmin 网站

    如何利用 Chrome 来模拟移动网络来高度 FastAdmin 网站 因为目前大多数都在开发移动类的网页,所以客户端的速度下载速度要也考虑. 虽然都已经 4G 了,但还是要看看在网络质量很差的情况 ...

  5. 阿里云 qW3xT.4 挖矿病毒问题

    查了一下.是个挖矿病毒,cpu 占用巨高 .杀了又有守护进程启动.网上有些杀死这个病毒的办法,大家可以试试.但是不确定能杀死. 建议直接重装系统. 然后,说说这货怎么传播的. 他通过redis .目前 ...

  6. BeanShell用法(摘抄至网络)

    说明:本文部分资料摘抄至 来源: http://www.cnblogs.com/puresoul/p/4915350.html 来源: http://www.cnblogs.com/puresoul/ ...

  7. Tornado 文件操作笔记

    import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from torna ...

  8. RHEL 6.5系统安装配置图解教程(rhel-server-6.5)

    转自:http://www.jb51.NET/os/128752.html 说明: 截止目前RHEL 6.x最新版本为RHEL 6.5,下面介绍RHEL 6.5的具体安装配置过程 服务器相关设置如下: ...

  9. HIMSS EMRAM新版标准将于2018年1月1日生效

    https://www.cn-healthcare.com/article/20170223/content-489862.html HIMSS EMRAM新版标准将于2018年1月1日生效 2017 ...

  10. C/S,B/S的应用区别

    C/S,B/S的应用区别 C/S即大家熟知的客服机和服务器结构通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销 B/S结构即浏览器和服务 ...