internal/affine/colorm.go
func (c *ColorM) SetElement(i, j int, element float32) *ColorM {
	newC := &ColorM{
		body:      make([]float32, 16),
		translate: make([]float32, 4),
	}
	copy(newC.body, colorMIdentityBody)
	copy(newC.translate, colorMIdentityTranslate)
	if c.isInited() {
		if c.body != nil {
			copy(newC.body, c.body)
		}
		if c.translate != nil {
			copy(newC.translate, c.translate)
		}
	}
	if j < (ColorMDim - 1) {
		newC.body[i+j*(ColorMDim-1)] = element
	} else {
		newC.translate[i] = element
	}
	return newC
}
func (c *ColorM) SetElement(i, j int, element float32) *ColorM {
	newC := &ColorM{
		body:      make([]float32, 16),
		translate: make([]float32, 4),
	}
	copy(newC.body, colorMIdentityBody)
	copy(newC.translate, colorMIdentityTranslate)
	if c.isInited() {
		if c.body != nil {
			copy(newC.body, c.body)
		}
		if c.translate != nil {
			copy(newC.translate, c.translate)
		}
	}
	if j < (ColorMDim - 1) {
		newC.body[i+j*(ColorMDim-1)] = element
	} else {
		newC.translate[i] = element
	}
	return newC
}
// SetElement sets an element at (i, j).