HExp12-1|Houdini Expression functions全集之数学计算类:

1、幂/指数/对数函数类:

float sqrt (float number)
返回参数的平方根,也就是以1/2为指数的幂函数。示例如下:
> sqrt (144)=12
float exp (float number)
以e为底的指数函数。示例如下:
> exp (x)= $E^x
> exp (2)= 7.3338906
float log (float number)
以e为底的对数函数。示例如下:
> log (2.718281828)= 1
float log10 (float number)
以10为底的对数函数。示例如下:
> log10(10) = 1
float pow (float base, float exponent)
幂函数与指数函数的结合体。base为底数,exponent为指数。示例如下:
> pow(2, 3) = 8
float degree (string surface_node, float prim_num, float D_U/D_V)
返回指定面的阶数。多边形和网格表示为线性函数,因此它们的阶数为1。样条线类型为NURBS或Bezier的曲线和曲面具有范围从1到10的阶数。如果基本体是多边形或曲线,则D_U和D_V不相关。
2、比大小:

float max (float value1, float value2)
返回两个值中较大的一个。
float min (float value1, float value2)
返回两个值中较小的一个。
3、随机数:

float oldrand (float value)
float rand (float value)
两者用法相同,均为返回一个介于0和1之间的随机数,区别是算法不同。
4、符号类:

float sign (float value)
符号函数。如果值为正,则返回1;如果值为负,则返回-1;如果值是零,则返回0。
float abs (float value)
绝对值函数。取绝对值。
5、取整/取小数类:(断舍离的若干种做法)

float int (float number)
float trunc (float number)
int与trunc用法相同,均为直接舍弃小数部分将数字转换为整数。快刀斩乱麻型
float rint (float number)
float round (float number)
rint与round用法相同,均为四舍五入到最接近的整数。权衡利弊型
float ceil (float number)
返回不小于输入值的最小整数。得寸进尺型
float floor (float number)
返回不大于输入值的最大整数。退而求其次型
float frac (float number)
返回浮点数的小数部分。该值由number- floor (number)所得,故<number>为负数时,计算结果将会出错,不能得到负数的小数部分。保险起见,可能用frac (abs (number))。因小失大型
6、三角函数类:

sin :正弦函数;sinh :双曲正弦函数;asin :反正弦函数
cos:余弦函数;cosh :双曲余弦函数;acos:反余弦函数
tan :正切函数;tanh:双曲正切函数;atan:反正切函数 ;atan2 (y, x):返回y/x的反正切
7、弧度与角度:

float deg (float radians)
将弧度转换为度数。
float rad (float number)
将度数转换为弧度。
8、脉冲:

float pulse (float value, float start, float end)
<value>小于<start>或大于<end>,则返回0,否则返回1。 形成一个脉冲波形。 通常,<start>和<end>是帧编号,<value>基于当前帧$F的求余数运算(%)。示例如下:
> pulse ($F%10, 0, 4)
9、进制转换:

float hextoint (string value)
将十六进制参数转换为整数。示例如下:
> hextoint ("A1") = 161
string inttohex (float value)
将整数转换为十六进制数。示例如下:
> inttohex (123) = 0000007B
10、度量类(长度、速度等):

float length (float x, float y, float z)
返回向量的长度。A.K.A sqrt (x*x + y*y + z*z)
float distance (float x1, float y1, float z1, float x2, float y2, float z2)
返回空间中两点之间的距离。A.K.A sqrt ((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)
float arclen (string surface_node, float prim_num, float ustart, float ustop)
计算曲线上两个U位置之间一段弧线的长度。<ustart>和<ustop>是在[0,1]区间中定义的单位值。对象必须是NURBS、Bezier或多边形曲线。示例如下:
> arclen ("/obj/geo1/model1", 12, 0, 1)
float arclenD (string surface_node, float prim_num, float ustart, float ustop, float divs)
计算曲线上一段弧线在一定分段数下的长度。<divs>是计算曲线时要使用的分割数。
float surflen (string surface_node, float prim_num, float ustart, float vstart, float ustop,float vstop)
返回曲面上两点之间的曲线长度。
float curvature (string surface_node, float prim_num, float u, float v)
返回给定UV坐标下曲面的曲率
vector angvel (vector rot1, vector rot2, float time)
计算在特定时间段内将对象从一个方向旋转到另一个方向所需的角速度。角速度为矢量,含大小与方向。
11、范围限制:

float lock (float float)
使指定的值无法被更改。
float fit (float num, float oldmin, float oldmax, float newmin, float newmax)
获取一个值,该值在新的范围内的位置相当于指定值在老的范围内的位置,或者说获取一个不同范围内相对位置相同的数。若<num>不在<oldmin>与<oldmax>之间,则返回<newmin>或<newmax>。
fit01、fit10、fit11
同"fit"。指定<oldmin>与<oldmax>为0、1或1、0或-1、1。
float smooth (float value, float minimum, float maximum)
指定一个值和一个范围,返回0和1之间的值,且为平滑过渡而非线性变化。
float wrap (float value, float minimum, float maximum)
将值包裹在最小值和最大值之间。与"clamp"类似,因为结果值将始终位于指定的最小值和最大值之间。它的值会在最小值与最大值之间重复。
float clamp (float value, float minimum, float maximum)
若<value>小于<minimum>,返回<minimum>,若<value>大于<maximum>,返回<maximum>,若介于两者之间,则返回该值本身。可以理解为对该值限制于结界内。
float clamptosphere (float x, float y, float z, float min_radius, float max_radius, string constant_type)
夹住向量,使其始终在最小球体和最大球体之间。设R(x,y,z)为该向量,则min_radius <= |R| <= max_radius,<constant_type>取X,Y 或Z。
12、位的逻辑运算:

float bitand (float abits, float bbits)
(将两个数字的二进制形式)按位(一 一对应进行)与运算。运算之前,先将<abits>和<bbits>以四舍五入的方式取整。
bitor、bitxor
同"bitand",按位或、异或运算。
float bitset (float number, float bit_index, float value)
对二进制数的指定位设置值,获得新的二进制数,并返回为十进制数。<value>值将通过四舍五入限制为0或1。
float bittest (float number, float bit_index)
若该二进制数的指定位有数字,则返回1,否则返回0。因为二进制数只有0和1,所以可以理解为返回指定位的值。说明:0位对应于最右边的位。负位索引或位索引超过63,将始终返回0。
