osg::ClipPlane 裁剪平面 空间平面方程

已知空间平面上三点 (x1,y1,z1),  (x2,y2,z2),  (x3,y3,z3)

//空间三维平面方程ax+by+cz+d=0; 计算 a,  b,  c,  d四个参数值

a = y1*(z2-z3)+y2*(z3-z1)+y3*(z1-z2);
b = z1*(x2-x3)+z2*(x3-x1)+z3*(x1-x2);
c = x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);
d = - (a*x1 + b*y1 + c*z1);//利用ax+by+cz+d=0;解算   或  //d = - x1*(y2*z3-y3*z2)-x2*(y3*z1-y1*z3)-x3*(y1*z2-y2*z1);

osg::ClipPlane* cp = new osg::ClipPlane () ;
    cp->setClipPlane(a,b,c,d);//设置裁剪平面

osg::node* pModel;//模型节点

pModel->->getOrCreateStateSet()->setAttributeAndModes (cp.get(), osg::StateAttribute ::ON );

 

判断点(x,y,z)是否落在裁切区域

double dvalue = a * x + b * y + c * z + d;
 if (dvalue < 0)//落在裁剪范围内

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值