mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Added unit test for calculation of 2D convex hull of sinking object
This commit is contained in:
		
							parent
							
								
									a218e0ef18
								
							
						
					
					
						commit
						f0ef5e409d
					
				
					 1 changed files with 40 additions and 0 deletions
				
			
		|  | @ -85,3 +85,43 @@ SCENARIO("Export+Import geometry to/from 3mf file cycle", "[3mf]") { | |||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SCENARIO("2D convex hull of sinking object", "[3mf]") { | ||||
|     GIVEN("model") { | ||||
|         // load a model
 | ||||
|         Model model; | ||||
|         std::string src_file = std::string(TEST_DATA_DIR) + "/test_3mf/Prusa.stl"; | ||||
|         load_stl(src_file.c_str(), &model); | ||||
|         model.add_default_instances(); | ||||
| 
 | ||||
|         WHEN("model is rotated, scaled and set as sinking") { | ||||
|             ModelObject* object = model.objects[0]; | ||||
|             object->center_around_origin(false); | ||||
| 
 | ||||
|             // set instance's attitude so that it is rotated, scaled and sinking
 | ||||
|             ModelInstance* instance = object->instances[0]; | ||||
|             instance->set_rotation(Y, -M_PI / 4.0); | ||||
|             instance->set_offset(Vec3d::Zero()); | ||||
|             instance->set_scaling_factor({ 2.0, 2.0, 2.0 }); | ||||
| 
 | ||||
|             // calculate 2D convex hull
 | ||||
|             Polygon hull_2d = object->convex_hull_2d(instance->get_transformation().get_matrix()); | ||||
| 
 | ||||
|             // verify result
 | ||||
|             Points result = { | ||||
|                 { -4242641, -16299551 }, | ||||
|                 { -4241,    -19502998 }, | ||||
|                 { 66824768, -19502998 }, | ||||
|                 { 66824768, 19502998 }, | ||||
|                 { -4244,    19502998 }, | ||||
|                 { -4242640, -8537523 } | ||||
|             }; | ||||
|             bool res = hull_2d.points == result; | ||||
| 
 | ||||
|             THEN("2D convex hull should match with reference") { | ||||
|                 REQUIRE(res); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 enricoturri1966
						enricoturri1966