What & How & Why

这是本文档旧的修订版!


VEX Concepts & Refs

Ver. 18.0 VEX 的函数相关

Geometry

Create

Addpoint

//功能:为指定的几何体添加点
//返回:函数返回类型为 int,返回对应点的 @ptnum,或者 -1。
/* 使用 */
//在指定的几何体中(通过geohandle决定), 在指定的点(通过@ptnum决定)添加一个点
int  addpoint(int geohandle, int point_number)
//给定点的坐标,添加一个点
int  addpoint(int geohandle, vector pos)

Addprim

Delete

Removepoint

//功能:删除几何体中指定的点
//返回:函数返回类型为 int 
/* 使用 */
//按点的编号(@ptnum)删除指定源中的指定点
removepoint(int input number, int point number);
//对删除点后的面的处理方式
//1 为删除任意因删除点造成的坏面,比如封闭的,只有3个顶点的面,或者开放的,只有二个顶点的面
//0 为删除因删除点造成的无效的几何体,比如少于 4 个顶点的四面体,没有顶点的体积等
removepoint(int input_number, int point_number, int method_code);
//e.g. 删除当前几何体中的 0 号点
removepoint(0, 0);

Point

Nearpoints

//功能:寻找并返回所有离目标几何体最近的点(只适用于点到点,参考 xyzdist)
//返回:int array,该数组内部包含所有满足要求的点的 @ptnum,包括源点自身在内。
/* 使用 */
//通过指定点的位置和最大搜寻距离寻找点
int [] nearpoints(<geometry>geometry, vector pt, float maxdist)
//通过指定点的位置和最大搜寻距离寻找点,限定点的搜寻数量
int [] nearpoints(<geometry>geometry, vector pt, float maxdist, int maxpts)
//对指定的 group 应用上述的搜寻方式:
int [] nearpoints(<geometry>geometry, string ptgroup, vector pt, float maxdist)
int [] nearpoints(<geometry>geometry, string ptgroup, vector pt, float maxdist, int maxpts)

MEASURE

BoundingBox

Getbbox_min / max

//功能:返回当前几何体 bounding box 的 min / max 点
//返回:函数返回类型为 Vector,为 min / max 的坐标。
/* 使用 */
//以 vec 的形式返回当前几何体 Bounding Box 的 min / max 点
//这两个点用于定义 Boundingbox(AABB)
vector  getbbox_max(geometry)
//也可以返回指定 primtive group 的 min / max
vector  getbbox_max(geometry, string primgroup)

NOISE AND RANDOMNESS

Rand

//功能:根据指定的种子产生一个[0,1]的随机数
//返回:该函数可以返回 float、vec2、vec3、vec4 的随机数。
//所有随机数的范围均在 [0,1] 之间,根据 seed 的不同来决定。
//根据操作系统的不同,同一个 seed 也可能导致不同的随机数结果。
/* 使用 */
float rand(seed); //返回类型为 float 的随机数
//如果返回是 vector,那么每一个分量的随机数都将不同。这种情况下如果需要做uniform scale,那么需要先将 vec 转化为 float:
vector pos = 1;
float seed = 0;
pos *= rand(seed); //random number are differernt in x,y,z
pos *= float(rand(seed));// uniformed random number

VOLUME

Volume

Volumesample

//功能:对 volume 中的指定属性进行采样
//返回:该函数返回类型为 float,返回值为采样的结果。在 @primum、@inputnum 越界的情况下或者被采样 volume 不是 vector voulme 的情况下返回 0。
/* 使用 */
//对指定数据进行采样
//geometry 可以为 handle 类型,也可以为路径
volumesample(int input_number, int primitive_number, vector position);
volumesample(int input_number, int "volume_name", vector position);