private void TestSutherlandHodgman(List <MyVector2> poly, List <MyVector2> clipPoly) { //Normalize to range 0-1 //We have to use all data to normalize List <MyVector2> allPoints = new List <MyVector2>(); allPoints.AddRange(poly); allPoints.AddRange(clipPoly); Normalizer2 normalizer = new Normalizer2(allPoints); List <MyVector2> poly_normalized = normalizer.Normalize(poly); List <MyVector2> clipPoly_normalized = normalizer.Normalize(clipPoly); //Main algorithm List <MyVector2> polygonAfterClipping_Normalized = SutherlandHodgman.ClipPolygon(poly_normalized, clipPoly_normalized); //UnNormalize List <MyVector2> polygonAfterClipping = normalizer.UnNormalize(polygonAfterClipping_Normalized); //2d to 3d List <Vector3> polygonAfterClipping3D = new List <Vector3>(); foreach (MyVector2 v in polygonAfterClipping) { polygonAfterClipping3D.Add(v.ToVector3()); } //Display DisplayPolygon(polygonAfterClipping3D, Color.red); }
private void TestSutherlandHodgman(List <MyVector2> poly, List <MyVector2> clipPoly) { //Normalize to range 0-1 //We have to use all data to normalize List <MyVector2> allPoints = new List <MyVector2>(); allPoints.AddRange(poly); allPoints.AddRange(clipPoly); AABB2 normalizingBox = new AABB2(allPoints); float dMax = HelpMethods.CalculateDMax(normalizingBox); List <MyVector2> poly_normalized = HelpMethods.Normalize(poly, normalizingBox, dMax); List <MyVector2> clipPoly_normalized = HelpMethods.Normalize(clipPoly, normalizingBox, dMax); //Main algorithm List <MyVector2> polygonAfterClipping_Normalized = SutherlandHodgman.ClipPolygon(poly_normalized, clipPoly_normalized); //UnNormalize List <MyVector2> polygonAfterClipping = HelpMethods.UnNormalize(polygonAfterClipping_Normalized, normalizingBox, dMax); //2d to 3d List <Vector3> polygonAfterClipping3D = new List <Vector3>(); foreach (MyVector2 v in polygonAfterClipping) { polygonAfterClipping3D.Add(v.ToVector3()); } //Display DisplayPolygon(polygonAfterClipping3D, Color.red); }