code: func (c *ColorM) ChangeHSV(hueTheta float64, saturationScale float32, valueScale float32) *ColorM {
  	sin, cos := math.Sincos(hueTheta)
  	s32, c32 := float32(sin), float32(cos)
  	c = c.Concat(rgbToYCbCr)
  	c = c.Concat(&ColorM{
  		body: []float32{
  			1, 0, 0, 0,
  			0, c32, s32, 0,
  			0, -s32, c32, 0,
  			0, 0, 0, 1,
  		},
  	})
  	s := saturationScale
  	v := valueScale
  	c = c.Scale(v, s*v, s*v, 1)
  	c = c.Concat(yCbCrToRgb)
  	return c
  }
docs: // ChangeHSV changes HSV (Hue-Saturation-Value) elements.
  // hueTheta is a radian value to ratate hue.
  // saturationScale is a value to scale saturation.
  // valueScale is a value to scale value (a.k.a. brightness).
  //
  // This conversion uses RGB to/from YCrCb conversion.