package producer

type GridPoint struct {
	Row, Col, H int
}

func gridImage(m, n, height, width, k, hmin, hmax int) []*GridPoint {
	a := int(height / (m + 1))
	var lines []int
	for i := 0; i < m; i++ {
		lines = append(lines, a*(i+1))
	}

	b := int(width / (n + 1))
	var samples []int
	for i := 0; i < n; i++ {
		samples = append(samples, b*(i+1))
	}

	averageH := (hmax - hmin) / 2
	dh := 500 // 高度差500m
	var h []int
	for i := 0; i < k; i++ {
		h = append(h, averageH+(i-k/2)*dh)
	}

	var points []*GridPoint
	for i := 0; i < len(lines); i++ {
		for j := 0; j < len(samples); j++ {
			for l := 0; l < len(h); l++ {
				p := GridPoint{lines[i], samples[j], h[l]}
				points = append(points, &p)
			}
		}
	}

	return points
}
