So I found some code for intersecting a line with a plane.
What I am missing is how do I translate the mouse pointer
coordinates into a line expressed in local coordinates?
Here the intersection code if anybody is interested:
Code:
bool getPlaneLineIntersection(const osg::Vec4d& plane,
const osg::Vec3d& lineStart, const
osg::Vec3d& lineEnd,
osg::Vec3d& isect)
{
// intersects an infinite line with an infinite plane
// in hesse normal form Ax + By + Cz + D = 0
// A,B,C is the normal vector of the plane, D the distance to the
origin
const double deltaX = lineEnd.x() - lineStart.x();
const double deltaY = lineEnd.y() - lineStart.y();
const double deltaZ = lineEnd.z() - lineStart.z();
const double denominator = (plane[0]*deltaX + plane[1]*deltaY +
plane[2]*deltaZ);
if (! denominator) return false;
const double C = (plane[0]*lineStart.x() + plane[1]*lineStart.y() +
plane[2]*lineStart.z() + plane[3]) / denominator;
isect.x() = lineStart.x() - deltaX * C;
isect.y() = lineStart.y() - deltaY * C;
isect.z() = lineStart.z() - deltaZ * C;
return true;
}
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=13954#13954
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org