Thanks very much! Looks like a quick and easy fix, we’ll make the patch.
> On Sep 29, 2016, at 8:30 AM, Yury Pakhomov <[email protected]> wrote: > > Hello all! > > I faced with error using simple 3D rotation: > _______________________ > use PDL; > use PDL::Transform; > > $in=pdl[1,1,1]; > $f = t_rot([0,90,0]); > $out= $in->apply($f); > print $out; > _______________________ > Dim mismatch in matmult of [2x2] x [3x3]: 2 != 3 at > /usr/local/lib64/perl5/PDL/Primitive.pm line 265. > > Why? I use only 3D vectors. Where appeared a 2D vector? > > I scan the code Transform.pm and found this place in function t_linear > which link with t_rot. > > Row 1904 defines dimensions: > $me->{idim} = $me->{odim} = 3 if($me->{params}->{rot}->nelem == 3); > It works. > > But then in row 1924 there is a last condition "else", and in row 1926: > $me->{idim} = $me->{odim} = 2; > That redefine early defined values of dimensions. > > This happens due to avoid variable $o_dims (row 1922). Indeed, if I write > $f = t_rot([0,90,0],dim=>3); > or > $f = t_linear(rot=>[0,90,0],dim=>3); > the code is executed fine. > > If after row 1905 we insert $o_dims=$me->{idim} then the problem will > be fixed. > > Good luck > Yury > > > ------------------------------------------------------------------------------ > _______________________________________________ > pdl-general mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/pdl-general > ------------------------------------------------------------------------------ _______________________________________________ pdl-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pdl-general
