判斷點是否在三角形內部

轉自:https://www.cnblogs.com/TenosDoIt/p/4024413.html

     //二維向量叉乘, 叉乘的結果其實是向量,方向垂直於兩個向量組成的平面,這裏我們只需要其大小和方向

    double CrossProduct(const Vector2d vec)

    {

        return x_*vec.y_ - y_*vec.x_;

    }

 

     //二維向量減法

    Vector2d Minus(const Vector2d vec) const

    {

        return Vector2d(x_ - vec.x_, y_ - vec.y_);

    }

 

 

      bool IsPointInTriangle4(const Vector2d pointP)

    {

        Vector2d PA = pointA_.Minus(pointP);

        Vector2d PB = pointB_.Minus(pointP);

        Vector2d PC = pointC_.Minus(pointP);

        double t1 = PA.CrossProduct(PB);

        double t2 = PB.CrossProduct(PC);

        double t3 = PC.CrossProduct(PA);

        return t1*t2 >= 0 && t1*t3 >= 0;

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章