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); }
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); }
private float GetEndAngle() { var endLine = Line.Create(Points[Points.Length - 1], Points[Points.Length - 2]); return(Mathf.Atan2(-endLine.A, endLine.B)); }
private float GetStartAngle() { var startLine = Line.Create(Points[1], Points[0]); return(Mathf.Atan2(-startLine.A, startLine.B)); }