int inc = 0;

//整数inc等于0

while(inc < 6){

//inc在小于6的范围内递增

if(rand(@ptnum + inc + ch("seed")) < ch("variance")){

inc++;

//如果随机数小于variance,产生递增值

continue;

}

float angle = radians(60 * inc);

//angle的值等于(1-5之间的递增值)*60度

vector axis = @N;

//旋转轴向等于点的法线属性

matrix rot = ident();

//定义矩阵rot

rotate(rot, angle, axis);

vector dir = v@dir * rot;

//dir的值等于原始dir乘以旋转度数

vector step = @P + dir * ch("step");

//step等于原始位置+(base中dir的随机的方向*长度)

vector rp, ruv;

int ray = intersect(2, @P + dir * 0.015, dir, rp, ruv);

//输出与边界框(端口2)相交处的坐标与uv坐标rp和ruv

if(ray == -1){

//如果不相交

int handle = pcopen(1, "P", step, ch("rad"), 1);

//pcopen打开点云查询查询范围是“rad”,查询点的个数是1

vector naxis = pcfilter(handle, "N");

//定义矢量属性naxis,是查询点的处的N属性

vector ndir = pcfilter(handle, "dir");

//定义矢量属性ndir,是查询点处的dir属性

pcclose(handle);

//pcclose这个函数用来关闭与pcopen相关的handle

int prim = addprim(0, "polyline");

//在0号端口处添加图元(polyline),为prim

int pt0 = addpoint(0, @P);

//在0号端口的@P处添加点,为pt0

int pt1 = addpoint(0, step);

//在0号端口的step处添加点,为pt1

addvertex(0, prim, pt0);

//在pt0处,图元名为prim的位置添加顶点

addvertex(0, prim, pt1);

//在pt1处,图元名为prim的位置添加顶点

setpointattrib(0, "end", pt1, 1);

//在pt1处设置end属性,值为1

setpointattrib(0, "N", pt1, naxis);

//在pt1处设置N属性,值为naxis

setpointattrib(0, "dir", pt1, ndir);

}

inc++;

}

i@base = 0;

i@start = 0;

frost_vex_01的更多相关文章

随机推荐

  1. List、Set和数组之间的转换(转载)

    本文转自 http://blog.sina.com.cn/s/blog_52fea7b60100s0hl.html 今天做项目中正好遇到该问题,就在网上查了下,这篇有些细节问题还是讲得挺好的. ★ 数 ...

  2. java算法03 - 常用的8种排序算法

    Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...

  3. JAVA基础50题

    package package0530; import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;imp ...

  4. 解决Visual C++ for Linux: -L"~/projects/path_to_lib_folder" 无法设置library search path的问题

    最近倒腾Linux C/C++项目.以目前的情况来说,要生成编译(build)一个Linux工程脚本,首选的工具必定是CMake.这也是我之前Linux项目的首选.不过自从VS IDE支持Linux ...

  5. Thread线程notify方法的自我理解

    感谢博主:http://zy19982004.iteye.com/blog/1626916 这篇博文给予我线程知识很大的帮助 知识背景:(1)wait().notify()均是Object的方法,故每 ...

  6. java基础知识—变量、数据类型和运算符

    1.变量:存储数据的一个基本单元.2.变量的声明和赋值: 1)声明并赋值;数据类型 变量名=值 例如:int prince=10; 2) 声明.赋值分为两步: 数据类型 变量名: 例如:int=pri ...

  7. Unity more efficient find

    Unity caches GameObjects based on their tags, so in a big scene with lots of objects, GameObject.Fin ...

  8. anyalarm

    #ifndef __ALRM_H #define __ALRM_H #define MAX 1024 typedef void (*any_t)(void *s); typedef struct { ...

  9. 关于SpringCloud的微服务架构,提示502 Bad Gateway nginx/1.10.0

    1.具体环境是使用虚拟机,并在虚拟机上安装nginx对本机上的端口服务进行反向代理 我按照步骤一步步搭建完环境以后,第一次使用是可以正常使用的,当我关闭计算机后,再一次启动环境,就会发现输入网址之后网 ...

  10. golang context

    ex1 package main import ( "fmt" ) // 最佳context 实践 // Context 目标是实现各个goroutine能及时终止退出. func ...