2

鉴于数学不是我的强项,我正在为 3D 动画实现贝塞尔曲线。

公式在这里显示,你可以看到它非常讨厌。在我的编程中,我使用描述性名称,并且喜欢将复杂的行分解为更小的易于管理的行。

处理这种情况的最佳方法是什么?

是否忽略编程最佳实践并坚持使用变量名称,例如 x、y 和 t?

4

9 回答 9

4

在我看来,当你有一个预定义的数学方程时,使用短变量名是完全可以接受的:x、y、t、P_0 等,它们对应于方程。不过,请务必清楚地引用公式。

于 2009-12-11T12:40:22.140 回答
2

如果将公式提取到它自己的函数中,我当然会使用规范的数学表示,并且可能在评论中添加 wiki 页面 url

如果它嵌入在具有特定功能用法的代码中,那么将域名从您的代码中保留可能会更好

这取决于

于 2009-12-11T12:41:34.790 回答
2

看到只有你心中的数学家才能真正理解这个公式,我的建议是采用数学家最熟悉的风格(所以字母作为变量等......)

我也肯定会在某处发表评论,明确说明公式是什么以及它的作用,例如“此方法返回沿二次贝塞尔曲线的一系列点”。这样,每当您的程序员重新访问代码时,您可以放心地忽略数学复杂性,并假设您的内心数学家已经检查过以确保一切正常。

于 2009-12-11T12:43:22.330 回答
1

我鼓励您使用数学的最​​佳实践并用字母表示变量。只需对公式上方的变量进行解释即可。如果您可以将公式拆分为更小的子公式,那就更好了。

于 2009-12-11T12:38:04.993 回答
1

不要打扰。只需参考文档(在这种情况下是维基百科页面,甚至更好的是您自己的文档)并确保变量名称与您的文档匹配。代码注释不太适合(也不需要)描述数学公式。

有时一个引用比 40 行注释甚至暗示性的变量名要好。

于 2009-12-11T12:45:26.733 回答
1

使 C#(或其他首选语言)中的公式尽可能类似于数学公式,并包含对公式的引用,包括对变量的描述。编码的想法是可读的,如果你正在处理数学公式,最可读的表示是看起来最像数学的表示。

于 2009-12-11T15:50:40.137 回答
0

您可以将公式键入wolfram alpha ...它会尝试为您简化。

它还会以数学友好的风格输出......很有趣;)

善良,

于 2009-12-11T12:39:56.690 回答
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
于 2009-12-11T13:16:17.363 回答
0

您可以考虑使用特定领域的语言来处理这个问题。Mathematica 将允许您写出方程,就像它在数学概念中出现的那样。

您的最终形式与原始方程式越相似,从长远来看,它就越可维护(否则您每次看到它时都必须解释代码)。

于 2009-12-11T15:39:52.573 回答