判断三角形顺时针/逆时针

类比安倍定理

利用矢量叉积判断是逆时针还是顺时针。

    设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是:

    AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1)

    则AB和AC的叉积为:(2*2的行列式)

    |x2-x1, y2-y1|

    |x3-x1, y3-y1|

    值为:(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)

    利用右手法则进行判断:

    如果AB*AC>0,则三角形ABC是逆时针的

    如果AB*AC<0,则三角形ABC是顺时针的

    如果……  =0,则说明三点共线,

int x1, y1, x2, y2, x3, y3;
    cin>>x1>>y1>>x2>>y2>>x3>>y3;
    int ans=(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1);//表示向量AB与AC的叉积的结果
    if(ans>0)
        cout<<0; //逆时针
    if(ans<0)
        cout<<1; //顺时针
    if(ans==0)
        cout<<"共线"<<endl;

https://blog.csdn.net/Jamence/article/details/77608659

发布了38 篇原创文章 · 获赞 12 · 访问量 3945

猜你喜欢

转载自blog.csdn.net/int_lyy/article/details/84620853