我们现在使用Go语言来绘制上图,即函数sin(r)/r所形成的画面。
代码如下:
// Surface computes an SVG redenring of a 3-D surface function.
package main
import (
"fmt"
"math"
)
const (
width, height = 600, 320 // 帆布大小,单位是像素
cells = 100 // 方格数量
xyrange = 30.0 // 坐标轴范围,从-xyrange到xyrange
xyscale = width / 2 / xyrange // 像素数每xy坐标轴单位长度
zscale = height * 0.4 // 像素数每z轴单位长度
angle = math.Pi / 6 // 视线与水平面夹角
)
var sin30, cos30 = math.Sin(angle), math.Cos(angle) // sin(30°), cos(30°)
func main() {
// svg文件的风格信息
fmt.Printf("<svg xmlns='http://www.w3.org/2000/svg' "+
"style='stroke: grey; fill: white; stroke-width: 0.7' "+
"width='%d' height=