예제 #1
0
    private int FindEmptyTrByEdge(int indBaseTr, TSide side)
    {
        int res = -1;

        for (int i = 0; i < arrTris.Length; i++)
        {
            if ((i != indBaseTr) && (arrTris[i].faceId == -1))
            {
                if (side.Equal(arrTris[i].indA, arrTris[i].indB) ||
                    side.Equal(arrTris[i].indB, arrTris[i].indC) ||
                    side.Equal(arrTris[i].indC, arrTris[i].indA))
                {
                    res = i;
                    break;
                }
            }
        }

        return(res);
    }
예제 #2
0
    private int FindEdgeBySide(List <Edge> listEdges, TSide side)
    {
        int res = -1;

        for (int i = 0; i < listEdges.Count; i++)
        {
            if (side.Equal(listEdges[i].side))
            {
                res = i; break;
            }
        }

        return(res);
    }
예제 #3
0
    private TSide[] SidesToFind(int indTr, TSide fromSide)
    {
        TSide[] res;

        if (fromSide == null)
        {
            res = new TSide[3] {
                new TSide {
                    a = arrTris[indTr].indA, b = arrTris[indTr].indB
                },
                new TSide {
                    a = arrTris[indTr].indB, b = arrTris[indTr].indC
                },
                new TSide {
                    a = arrTris[indTr].indC, b = arrTris[indTr].indA
                }
            };
        }
        else
        {
            res = new TSide[2];

            if (fromSide.Equal(arrTris[indTr].indA, arrTris[indTr].indB))
            {
                res = new TSide[2] {
                    new TSide {
                        a = arrTris[indTr].indB, b = arrTris[indTr].indC
                    },
                    new TSide {
                        a = arrTris[indTr].indC, b = arrTris[indTr].indA
                    }
                };
            }

            if (fromSide.Equal(arrTris[indTr].indB, arrTris[indTr].indC))
            {
                res = new TSide[2] {
                    new TSide {
                        a = arrTris[indTr].indA, b = arrTris[indTr].indB
                    },
                    new TSide {
                        a = arrTris[indTr].indC, b = arrTris[indTr].indA
                    }
                };
            }

            if (fromSide.Equal(arrTris[indTr].indC, arrTris[indTr].indA))
            {
                res = new TSide[2] {
                    new TSide {
                        a = arrTris[indTr].indA, b = arrTris[indTr].indB
                    },
                    new TSide {
                        a = arrTris[indTr].indB, b = arrTris[indTr].indC
                    }
                };
            }
        }

        return(res);
    }