馬上注冊,結(jié)交更多好友,享用更多功能,讓你輕松玩轉(zhuǎn)社區(qū)。
您需要 登錄 才可以下載或查看,沒有帳號?立即加入SketchUp吧!

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