Hi John,

On 11 May 2015 at 09:26, John Ivar Haugland <[email protected]> wrote:
> Regarding vector and matrix operations in OpenSceneGraph, I have experienced
> (some years ago) loosing precision when using the following operation, where
> _localToWorld is a osg::Matrixd
>
> osg::Vec3d v = vertices->at(i) * _localToWorld;
>
> To get the correct result I had to compute it in two steps:
>
> osg::Vec3d vert = vertices->at(i);
> osg::Vec3d v = vert * _localToWorld;
>
> I am not sure if this problem still exist with the current matrix and vector
> classes.

If you wanted double precision when you are passing in a float vector
then I don't think you should be expecting the compiler to know
automatically change it to double, or for the OSG to by default do
double maths even though you passed in float.  The simple way is to
explicitly convert the Vec3f to a Vec4f, but no need for two steps:

  osg::Vec3d v = osg::Vec3d( vertices->at(i)) * _localToWorld;


Robert.
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to