Esempio n. 1
0
        private WallSegmentLines[] GetLines()
        {
            var innerPoints = InnerPoints.Value;
            var outerPoints = OuterPoints.Value;
            var lines       = new WallSegmentLines[Points.Length - 1];

            for (int i = 0; i < innerPoints.Length - 1; i++)
            {
                lines[i] = new WallSegmentLines(
                    Line.Create(innerPoints[i + 1], innerPoints[i]),
                    Line.Create(outerPoints[i + 1], outerPoints[i]));
            }

            return(lines);
        }
Esempio n. 2
0
        private WallPointNormals[] GetNormals()
        {
            var lines = new Line[Points.Length - 1];

            for (int i = 0; i < Points.Length - 1; i++)
            {
                lines[i] = Line.Create(Points[i + 1], Points[i]);
            }

            var normals = new WallPointNormals[Points.Length];

            normals[0] = new WallPointNormals(lines[0].GetNormalVector());
            normals[normals.Length - 1] = new WallPointNormals(lines[lines.Length - 1].GetNormalVector());

            for (int i = 0; i < Points.Length - 2; i++)
            {
                normals[i + 1] = new WallPointNormals(lines[i].GetNormalVector() + lines[i + 1].GetNormalVector());
            }

            return(normals);
        }
Esempio n. 3
0
        private float GetEndAngle()
        {
            var endLine = Line.Create(Points[Points.Length - 1], Points[Points.Length - 2]);

            return(Mathf.Atan2(-endLine.A, endLine.B));
        }
Esempio n. 4
0
        private float GetStartAngle()
        {
            var startLine = Line.Create(Points[1], Points[0]);

            return(Mathf.Atan2(-startLine.A, startLine.B));
        }