osg::Plane
是一个用于表示平面的类,平面由一个点和一个法线向量定义。它经常用于碰撞检测、投影和裁剪等方面。
osg::Plane::Plane()
创建一个具有默认值的平面。它的点是(0,0,0)
,法线是(0,0,1)
。
osg::Plane::Plane(const osg::Plane& plane, const osg::Matrixd& matrix)
使用指定平面和变换矩阵创建一个新平面。新平面的点和法线向量将根据给定矩阵进行变换。
osg::Plane::Plane(const osg::Vec3& point, const osg::Vec3& normal)
使用指定点和法线向量创建一个新平面。
osg::Plane::Plane(double a, double b, double c, double d)
使用四个标量值分别代表平面方程Ax + By + Cz + D = 0
的系数创建一个新平面。
void osg::Plane::set(double a, double b, double c, double d)
设置平面的系数,用于控制平面方程Ax + By + Cz + D = 0
。
void osg::Plane::set(const osg::Vec4& plane)
设置平面的系数,用于控制平面方程Ax + By + Cz + D = 0
。
void osg::Plane::set(const osg::Vec3& point, const osg::Vec3& normal)
设置平面的点和法线向量。
void osg::Plane::set(const osg::Vec3& p1, const osg::Vec3& p2, const osg::Vec3& p3)
使用三个点的坐标,计算出平面的法线向量和点。
osg::Vec3 osg::Plane::getNormal() const
获得平面的法线向量。
void osg::Plane::flip()
将平面翻转,即交换平面上点的两个侧面。
double osg::Plane::distance(const osg::Vec3& point) const
计算给定点到平面的距离。
osg::Vec3 osg::Plane::intersectLine(const osg::Vec3& start, const osg::Vec3& end) const
计算射线与平面的交点。
osg::Plane plane = osg::Plane(osg::Vec3(1, 0, 0), osg::Vec3(0, 0, 1));
osg::Vec3 point(5, 0, 5);
double distance = plane.distance(point);