frost_vex_01
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的更多相关文章
随机推荐
- List、Set和数组之间的转换(转载)
本文转自 http://blog.sina.com.cn/s/blog_52fea7b60100s0hl.html 今天做项目中正好遇到该问题,就在网上查了下,这篇有些细节问题还是讲得挺好的. ★ 数 ...
- java算法03 - 常用的8种排序算法
Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...
- JAVA基础50题
package package0530; import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;imp ...
- 解决Visual C++ for Linux: -L"~/projects/path_to_lib_folder" 无法设置library search path的问题
最近倒腾Linux C/C++项目.以目前的情况来说,要生成编译(build)一个Linux工程脚本,首选的工具必定是CMake.这也是我之前Linux项目的首选.不过自从VS IDE支持Linux ...
- Thread线程notify方法的自我理解
感谢博主:http://zy19982004.iteye.com/blog/1626916 这篇博文给予我线程知识很大的帮助 知识背景:(1)wait().notify()均是Object的方法,故每 ...
- java基础知识—变量、数据类型和运算符
1.变量:存储数据的一个基本单元.2.变量的声明和赋值: 1)声明并赋值;数据类型 变量名=值 例如:int prince=10; 2) 声明.赋值分为两步: 数据类型 变量名: 例如:int=pri ...
- Unity more efficient find
Unity caches GameObjects based on their tags, so in a big scene with lots of objects, GameObject.Fin ...
- anyalarm
#ifndef __ALRM_H #define __ALRM_H #define MAX 1024 typedef void (*any_t)(void *s); typedef struct { ...
- 关于SpringCloud的微服务架构,提示502 Bad Gateway nginx/1.10.0
1.具体环境是使用虚拟机,并在虚拟机上安装nginx对本机上的端口服务进行反向代理 我按照步骤一步步搭建完环境以后,第一次使用是可以正常使用的,当我关闭计算机后,再一次启动环境,就会发现输入网址之后网 ...
- golang context
ex1 package main import ( "fmt" ) // 最佳context 实践 // Context 目标是实现各个goroutine能及时终止退出. func ...