A ‘translation’ expects a ‘vector’ rather than a ‘point’ ?
Although any suitable three element ‘array’ will probably work anyway…
BUT your ‘pts’ is itself an Array of three elements, each of which is itself a three element Array [a point?].
The ‘transformation’ is expecting pts to be a three element array containing three Floats NOT three Arrays.
If you want to transform each of the points inside pts then use say: tr=Geom::Transformation.translation(Geom::Vector3d.new(2.0, 0.0, 0.0) pts.each{|pt| pt.transform!(tr) }
Then reuse the modified pts to make a new face etc…