黄金比例分割是把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。其比值是一个无理数,取其前三位数字的近似值是0.618。
通过简单的计算就可以发现:
1/0.618=1.618
(1-0.618)/0.618=0.618
基于以上计算,下面我们用程序来实现:
假定一条线段为a, 输入公式,就可以获取经过黄金分割后的两段线段的长度.
VBA代码:
'自定义函数: goldenCut(a AsDouble, getType As String)
'参数说明:
'a:长度/角度等
'getType 有两个取值"long","short" "long"-获取较长一段的长度,"short" 获取较短一段的长度
Function goldenCut(a As Double, getType AsString)
getType = LCase(getType) '转为小写
result = "#/E" '错误
If getType = "long" Then
result = a * ((Sqr(5) - 1) / 2)
ElseIf getType = "short" Then
result = a * (1 - ((Sqr(5) - 1) / 2))
End If
goldenCut = result
End Function
输入=goldenCut(1,"long") 将获得0.6180339887
=goldenCut(1,"short") 将获得0.3819660113
用java也可以轻松写出类似的方法,这里就不赘述了。
黄金分割在很多领域都有应用,比如股市,建筑,等等,知道怎样用程序来实现是很有必要的。