空间三角形顺逆时针判断方法

在计算机图形学中一个三角面的法线朝向决定了 该三角面的光照渲染等一系列的操作。

在建模的时候,法线朝向也决定了建模的效果。

譬如在CSG库中对模型进行布尔运算就需要模型的三角面都是法线朝外的。

自定义建模则需要计算三角面的顺序,并调整三角面的顺序

public boolean needChangTrangles(List<Vector3d> vertices, Vector3d refer) {
    boolean retHasChange = false;
    //求三角形的法向量
    Vector3d aPoint = vertices.get(0);
    Vector3d bPoint = vertices.get(1);
    Vector3d cPoint = vertices.get(2);
    Polygon tempPolygon = Polygon.fromPoints(vertices);
    Vector3d normal = tempPolygon.getPlane().getNormal();
    double mD = -normal.dot(aPoint);
    double temp = normal.dot(refer) + mD;
    //v>0为逆时针,反之为顺时针
    if (temp > 0) {
        retHasChange = false;
    } else {
        retHasChange = true;
    }
    return retHasChange;
}

其中refer为参考点的坐标,法线顺时针还是逆时针都是需要有参考点的。即该三角形相对于该参考点是逆时针还是顺时针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值