提问者:小点点

如何检查4个点是否形成凸四边形


总的来说,我对编码很陌生。我已经找到了这个问题的一些答案,但这些答案对我来说似乎很先进。

我正试着写我自己的有限元项目。为此,我想写一个方法,检查作为输入的随机4个节点是否形成凸四边形。

我的方法应该是这样的:

private bool IsConvex(Node[4] corners)
{
    bool isConvex;

    //CODE//

    return isConvex;
}

Node类由三个引用其坐标的公共属性(. coordX,. coordY,. coordZ)定义


共1个答案

匿名用户

为了知道四边形是凸还是不凸,你可以做一个由三个点组成的三角形,看看第四个点是否位于那个三角形内部。如果你设法找到一个三角形,其中包含第四个点,那么你就没有凸四边形。

好的,你怎么知道一个点是否位于三角形内?

首先,确定一个点相对于一个向量位于哪一侧<再来吗
对于每个向量,您可以确定点是位于左侧还是右侧:您只需将向量旋转回Y轴,对该点执行相同操作,如果该点的X坐标为负,则该点位于左侧,否则它位于右侧,如以下三种情况(左、左、右):

一旦你明白了这一点,你定义一个点在一个三角形内,如果在将三角形描述为一个向量三角形后,你的点在所有向量的同一侧,如本例所示(请注意,你的三角形由向量AB、BC和CA组成:这些点必须相互跟随):

祝你好运