HExp12-1|Houdini Expression functions全集之?dāng)?shù)學(xué)計算類:

1、冪/指數(shù)/對數(shù)函數(shù)類:

float sqrt (float number)
返回參數(shù)的平方根,也就是以1/2為指數(shù)的冪函數(shù)。示例如下:
> sqrt (144)=12
float?exp (float?number)
以e為底的指數(shù)函數(shù)。示例如下:
> exp (x)= $E^x
> exp (2)= 7.3338906
float?log?(float?number)
以e為底的對數(shù)函數(shù)。示例如下:
> log (2.718281828)= 1
float?log10?(float?number)
以10為底的對數(shù)函數(shù)。示例如下:
> log10(10) = 1
float?pow (float?base, float?exponent)
冪函數(shù)與指數(shù)函數(shù)的結(jié)合體。base為底數(shù),exponent為指數(shù)。示例如下:
> pow(2, 3) = 8
float degree (string?surface_node, float?prim_num, float?D_U/D_V)
返回指定面的階數(shù)。多邊形和網(wǎng)格表示為線性函數(shù),因此它們的階數(shù)為1。樣條線類型為NURBS或Bezier的曲線和曲面具有范圍從1到10的階數(shù)。如果基本體是多邊形或曲線,則D_U和D_V不相關(guān)。
2、比大小:

float max (float?value1, float?value2)
返回兩個值中較大的一個。
float?min?(float?value1,?float?value2)
返回兩個值中較小的一個。
3、隨機(jī)數(shù):

float?oldrand (float?value)
float?rand?(float?value)
兩者用法相同,均為返回一個介于0和1之間的隨機(jī)數(shù),區(qū)別是算法不同。
4、符號類:

float sign (float value)
符號函數(shù)。如果值為正,則返回1;如果值為負(fù),則返回-1;如果值是零,則返回0。
float?abs (float?value)
絕對值函數(shù)。取絕對值。
5、取整/取小數(shù)類:(斷舍離的若干種做法)??

float int (float number)
float?trunc (float?number)
int與trunc用法相同,均為直接舍棄小數(shù)部分將數(shù)字轉(zhuǎn)換為整數(shù)。快刀斬亂麻型
float?rint (float?number)
float?round (float?number)
rint與round用法相同,均為四舍五入到最接近的整數(shù)。權(quán)衡利弊型
float?ceil (float?number)
返回不小于輸入值的最小整數(shù)。得寸進(jìn)尺型
float?floor?(float?number)
返回不大于輸入值的最大整數(shù)。退而求其次型
float?frac?(float?number)
返回浮點(diǎn)數(shù)的小數(shù)部分。該值由number- floor (number)所得,故<number>為負(fù)數(shù)時,計算結(jié)果將會出錯,不能得到負(fù)數(shù)的小數(shù)部分。保險起見,可能用frac (abs (number))。因小失大型
6、三角函數(shù)類:

sin :正弦函數(shù);sinh?:雙曲正弦函數(shù);asin?:反正弦函數(shù)
cos:余弦函數(shù);cosh?:雙曲余弦函數(shù);acos:反余弦函數(shù)
tan :正切函數(shù);tanh:雙曲正切函數(shù);atan:反正切函數(shù) ;atan2 (y, x):返回y/x的反正切
7、弧度與角度:

float deg (float radians)
將弧度轉(zhuǎn)換為度數(shù)。
float?rad (float?number)
將度數(shù)轉(zhuǎn)換為弧度。
8、脈沖:

float?pulse (float?value, float?start, float?end)
<value>小于<start>或大于<end>,則返回0,否則返回1。? 形成一個脈沖波形。?通常,<start>和<end>是幀編號,<value>基于當(dāng)前幀$F的求余數(shù)運(yùn)算(%)。示例如下:
> pulse ($F%10, 0, 4)
9、進(jìn)制轉(zhuǎn)換:

float hextoint (string value)
將十六進(jìn)制參數(shù)轉(zhuǎn)換為整數(shù)。示例如下:
> hextoint ("A1") = 161
string?inttohex?(float?value)
將整數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。示例如下:
> 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)
返回空間中兩點(diǎn)之間的距離。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]區(qū)間中定義的單位值。對象必須是NURBS、Bezier或多邊形曲線。示例如下:
> arclen ("/obj/geo1/model1", 12, 0, 1)
float?arclenD (string?surface_node, float?prim_num, float?ustart, float?ustop, float?divs)
計算曲線上一段弧線在一定分段數(shù)下的長度。<divs>是計算曲線時要使用的分割數(shù)。
float?surflen?(string?surface_node,?float?prim_num,?float?ustart,?float?vstart,?float?ustop,float?vstop)
返回曲面上兩點(diǎn)之間的曲線長度。
float?curvature?(string?surface_node,?float?prim_num, float?u,?float v)
返回給定UV坐標(biāo)下曲面的曲率
vector angvel (vector rot1, vector rot2, float time)
計算在特定時間段內(nèi)將對象從一個方向旋轉(zhuǎn)到另一個方向所需的角速度。角速度為矢量,含大小與方向。
11、范圍限制:??

float?lock?(float?float)
使指定的值無法被更改。
float?fit (float?num,?float oldmin, float?oldmax, float?newmin, float?newmax)
獲取一個值,該值在新的范圍內(nèi)的位置相當(dāng)于指定值在老的范圍內(nèi)的位置,或者說獲取一個不同范圍內(nèi)相對位置相同的數(shù)。若<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"類似,因?yàn)榻Y(jié)果值將始終位于指定的最小值和最大值之間。它的值會在最小值與最大值之間重復(fù)。
float?clamp?(float?value,?float?minimum,?float?maximum)
若<value>小于<minimum>,返回<minimum>,若<value>大于<maximum>,返回<maximum>,若介于兩者之間,則返回該值本身??梢岳斫鉃?span id="s0sssss00s" class="color-purple-02 font-size-16">對該值限制于結(jié)界內(nèi)。
float clamptosphere (float x, float y, float z, float min_radius, float max_radius, string constant_type)
夾住向量,使其始終在最小球體和最大球體之間。設(shè)R(x,y,z)為該向量,則min_radius <= |R| <= max_radius,<constant_type>取X,Y?或Z。
12、位的邏輯運(yùn)算:

float?bitand (float?abits, float?bbits)
(將兩個數(shù)字的二進(jìn)制形式)按位(一 一對應(yīng)進(jìn)行)與運(yùn)算。運(yùn)算之前,先將<abits>和<bbits>以四舍五入的方式取整。
bitor、bitxor
同"bitand",按位或、異或運(yùn)算。
float?bitset (float?number, float?bit_index, float?value)
對二進(jìn)制數(shù)的指定位設(shè)置值,獲得新的二進(jìn)制數(shù),并返回為十進(jìn)制數(shù)。<value>值將通過四舍五入限制為0或1。
float?bittest?(float?number,?float?bit_index)
若該二進(jìn)制數(shù)的指定位有數(shù)字,則返回1,否則返回0。因?yàn)槎M(jìn)制數(shù)只有0和1,所以可以理解為返回指定位的值。說明:0位對應(yīng)于最右邊的位。負(fù)位索引或位索引超過63,將始終返回0。
