private float PopulateCompleteSide(ref CrossSection face, int quadrant, float halfCubeWidth, bool outer) { quadrant = NormalizeQuadrant(quadrant); face.RemoveAllPoints(); Vector3 startPoint = ReferenceVertices[quadrant]; Vector3 endPoint; if (quadrant < NumberFaces - 1) { endPoint = ReferenceVertices[quadrant + 1]; } else { endPoint = ReferenceVertices[0]; } startPoint = startPoint * halfCubeWidth / 0.5f; endPoint = endPoint * halfCubeWidth / 0.5f; if (outer) { face.AddPoint(startPoint); face.AddPoint(endPoint); } else { face.AddPoint(endPoint); face.AddPoint(startPoint); } return(2f * halfCubeWidth); }
// Handles the first face in the cut, starting from cutstart, // and running anticlockwise to first reference vertex private float PopulateSingleCutFacePositiveDirection(ref CrossSection face, Vector3 cutPoint, int quadrant, float halfCubeWidth, bool outer) { quadrant = NormalizeQuadrant(quadrant); face.RemoveAllPoints(); Vector3 startPoint = cutPoint; Vector3 endPoint; if (quadrant < NumberFaces - 1) { endPoint = ReferenceVertices[quadrant + 1] * halfCubeWidth / 0.5f; } else { endPoint = ReferenceVertices[0] * halfCubeWidth / 0.5f; } if (outer) { face.AddPoint(startPoint); face.AddPoint(endPoint); } else { face.AddPoint(endPoint); face.AddPoint(startPoint); } return(Vector3.Distance(startPoint, endPoint)); }
// Handles the first face in the cut, starting from cutstart, // and running anticlockwise to first reference vertex private float PopulateSingleCutFacePositiveDirection(ref CrossSection face, Vector3 cutPoint, int quadrant, float halfCubeWidth, bool outer) { quadrant = NormalizeQuadrant(quadrant); face.RemoveAllPoints(); Vector3 startPoint = cutPoint; Vector3 endPoint; if (quadrant < NumberFaces - 1) { endPoint = ReferenceVertices[quadrant + 1] * halfCubeWidth / 0.5f; } else { endPoint = ReferenceVertices[0] * halfCubeWidth / 0.5f; } if (outer) { face.AddPoint(startPoint); face.AddPoint(endPoint); } else { face.AddPoint(endPoint); face.AddPoint(startPoint); } return Vector3.Distance(startPoint, endPoint); }
private float PopulateCompleteSide(ref CrossSection face, int quadrant, float halfCubeWidth, bool outer) { quadrant = NormalizeQuadrant(quadrant); face.RemoveAllPoints(); Vector3 startPoint = ReferenceVertices[quadrant]; Vector3 endPoint; if (quadrant < NumberFaces - 1) { endPoint = ReferenceVertices[quadrant + 1]; } else { endPoint = ReferenceVertices[0]; } startPoint = startPoint * halfCubeWidth / 0.5f; endPoint = endPoint * halfCubeWidth / 0.5f; if (outer) { face.AddPoint(startPoint); face.AddPoint(endPoint); } else { face.AddPoint(endPoint); face.AddPoint(startPoint); } return 2f * halfCubeWidth; }