SketchUp8.0在組件屬性的函數(shù)里增加了Power函數(shù)(冪函數(shù)),這解決了當初玩兒動態(tài)組件想達到一個數(shù)的N次冪必須得在公式里把這個數(shù)乘N遍的尷尬局面。
最近在使用這個函數(shù)的時候發(fā)現(xiàn)這個函數(shù)在SketchUp里的不足,不能對負數(shù)進行開方運算(冪為分數(shù)),接下來對這個函數(shù)進行了擴展;由于個人能力有限,只能解決 負數(shù)的開整數(shù)方根 這個方面,希望官方在后期的SketchUp版本中能優(yōu)化這個函數(shù);
首先說明一下Power函數(shù):
函數(shù)表達式為Power(base,power),base為基數(shù),power為冪;
如:Power(2,3),表示2的3次冪,結果為8;
Power(8,1/3),表示8的1/3次冪,也就是8的立方根,結果為2;
這些在SketchUp的組件屬性中自定義一個屬性并在屬性后輸入表達式“=Power(base,power)”(不需要引號)可得到驗證。
但是,問題來了,當我輸入Power(-8,1/3),本以為會得到-2這個結果,誰知道得到的如下
搜狗截圖20150709164511.png (1.62 KB, 下載次數(shù): 1)
下載附件
保存到相冊
2015-7-9 16:44 上傳
我也是醉了,還以為自己數(shù)學沒學好,趕緊打開Excel,輸入了同樣的等式,結果確實是-2;
經(jīng)過多次測試得出這樣一個結論:
組件屬性的Power函數(shù)不支持對負數(shù)進行小數(shù)/分數(shù)次冪運算;
接下來提出的方案只能解決負數(shù)開整數(shù)方根的可實施性,也就是對負數(shù)進行整數(shù)分之一次冪的運算;
Power(base,power)中的Power為1/2,1/3,1/4...
搜狗截圖20150709165900.png (10.32 KB, 下載次數(shù): 2)
下載附件
保存到相冊
2015-7-9 16:58 上傳
圖中Result后的表達式即為解決方案;
以下為解釋說明;
我把基數(shù)分為兩種情況,base大于等于0,base小于0;
當base大于等于0,則base的root分之一次冪等于,表達式為Power(abs(base),1/root);
注:abs()為絕對值運算,因為base為負數(shù)時結果不對;
當base小于0,又分為兩種情況,root為奇數(shù)還是偶數(shù);
1.我們知道負數(shù)沒有偶數(shù)方根,所以root為偶數(shù)時,我輸入了“FalseNum”;
2.root為奇數(shù)時,相當于基數(shù)base的絕對值的root分之一次冪*-1;
中間利用到的函數(shù)列舉如下,具體用法及定義可在網(wǎng)上查詢
IF(test,thenValue,elseValue),邏輯函數(shù),判定函數(shù);
ABS(number),絕對值轉(zhuǎn)換;
ISEVEN(number),偶數(shù)判斷;或用ISODD(number),奇數(shù)判斷;
|
|