2009-12-11 95 views
2

鑑於數學並不是我最強的一點,我正在實現3D動畫的貝塞爾曲線。你如何讓數學方程具有可讀性和可維護性?

該公式顯示爲here,正如您所看到的,它非常討厭。在我的編程中,我使用了描述性名稱,並且喜歡將複雜的線條分解爲更小的可管理的線條。

處理這種情況的最佳方法是什麼?

是否忽視編程最佳實踐並堅持使用變量名稱,如x,y和t?

+0

您可以舉一個例子,說明bezier示例中的「編程最佳實踐」是什麼? – 2009-12-11 12:43:57

+0

描述性變量名稱。保持簡短的代碼行,用C#編寫的完整論壇會比紙上的要長。 – Finglas 2009-12-11 12:46:11

回答

4

在我看來,當你有一個預定義的數學方程式是完全可以接受的使用對應於該等式的短變量名稱:x,y,t,P_0等。請務必清楚地參考公式。

1

我鼓勵你使用數學的最​​佳實踐並用字母表示變量。只需提供公式上方變量的解釋。如果你可以將公式分割成更小的子公式,甚至更好。

0

您可以將公式輸入到wolfram alpha ......它會盡力爲您簡化。

這將也是一個Mathematica友好的風格......有趣的是輸出)

善良,

2

如果公式中萃取到它自己的功能我會用一定的規範數學表示,如果可能添加wiki頁面的URL在評論

其代碼嵌入與功能的具體使用則保持你的代碼中的域名可能會更好

這取決於

2

看到,因爲只有數學家你實際上是要理解公式,我的建議是去同一個風格,一個數學家將是最舒適(所以字母作爲變量等...)

我也肯定會在那裏清楚說明公式是什麼以及它做了什麼,例如「這種方法沿着二次貝塞爾曲線返回一系列點」。這樣,當程序員重新訪問代碼時,你可以放心地忽略數學的複雜性,假設你的內部數學家已經檢查過,以確保它的一切正常。

1

不要打擾。只需參考文檔(在這種情況下維基百科頁面,或者甚至更好的自己的文檔),並確保變量名稱符合您的文檔。代碼評論並不適合(也不需要他們)描述數學公式。

有時候參考比40行評論甚至暗示變量名稱更好。

0

我傾向於將一個方程式分解爲其根部分。

def sum(array) 
    array.inject(0) { |result, item| result + item } 
end 

def average(array) 
    sum(array)/array.length 
end 

def sum_squared_error(array) 
    avg = average(array) 
    array.inject(0) { |result, item| result + (item - avg) ** 2 } 
end 

def variance(array) 
    sum_squared_error(array)/(array.length - 1) 
end 

def standard_deviation(array) 
    Math.sqrt(variance(array)) 
end 
0

您可能會考慮使用特定領域的語言來處理此問題。 Mathematica可以讓你寫出方程,就像它出現在數學概念中一樣。

您的最終表單與原始方程式相似的程度越高,從長遠來看,它的可維護性越高(否則每次看到代碼時都必須解釋代碼)。

1

使C#(或其他偏好語言)中的公式儘可能類似於數學公式,並且包括對公式的引用,包括對變量的描述。編碼的想法是可讀的,如果你正在處理數學公式,那麼最具可讀性的表示形式就像數學一樣。