@@ -1147,3 +1147,78 @@ fn test_get_total_intersection_area() {
11471147 approx:: assert_abs_diff_eq!( a1, a2, epsilon = 1e-3 ) ;
11481148 }
11491149}
1150+
1151+ #[ test]
1152+ fn test_min_dist_to_segment_1 ( ) {
1153+ let m = nalgebra:: matrix![ 0.0 , 0.0 ] ;
1154+ let v1 = nalgebra:: matrix![ 1.0 , 0.0 ] ;
1155+ let v2 = nalgebra:: matrix![ 0.0 , 1.0 ] ;
1156+ let dist = minimum_dist_to_segment (
1157+ & m. transpose ( ) ,
1158+ v1. transpose ( ) . as_view ( ) ,
1159+ v2. transpose ( ) . as_view ( ) ,
1160+ ) ;
1161+ approx:: assert_abs_diff_eq!( dist, 1.0 / 2f64 . sqrt( ) ) ;
1162+ }
1163+
1164+ #[ test]
1165+ fn test_min_dist_to_segment_2 ( ) {
1166+ let m = nalgebra:: matrix![ 0.0 , 0.0 ] ;
1167+ let v1 = nalgebra:: matrix![ -1.0 , 1.0 ] ;
1168+ let v2 = nalgebra:: matrix![ 1.0 , 1.0 ] ;
1169+ let dist = minimum_dist_to_segment (
1170+ & m. transpose ( ) ,
1171+ v1. transpose ( ) . as_view ( ) ,
1172+ v2. transpose ( ) . as_view ( ) ,
1173+ ) ;
1174+ approx:: assert_abs_diff_eq!( dist, 1.0 ) ;
1175+ }
1176+
1177+ #[ test]
1178+ fn test_min_dist_to_segment_3 ( ) {
1179+ let m = nalgebra:: matrix![ 0.0 , 0.0 ] ;
1180+ let v1 = nalgebra:: matrix![ 0.0 , 2.0 ] ;
1181+ let v2 = nalgebra:: matrix![ 1.0 , 0.0 ] ;
1182+ let dist = minimum_dist_to_segment (
1183+ & m. transpose ( ) ,
1184+ v1. transpose ( ) . as_view ( ) ,
1185+ v2. transpose ( ) . as_view ( ) ,
1186+ ) ;
1187+ let h = 2.0 / 5f64 . sqrt ( ) ;
1188+ approx:: assert_abs_diff_eq!( dist, h) ;
1189+ }
1190+
1191+ #[ test]
1192+ fn test_min_dist_to_segment_4 ( ) {
1193+ let m = nalgebra:: matrix![ 0.0 , 0.0 ] ;
1194+ let v1 = nalgebra:: matrix![ -1.0 , 5.0 ] ;
1195+ let v2 = nalgebra:: matrix![ 0.0 , 2.0 ] ;
1196+ let dist = minimum_dist_to_segment (
1197+ & m. transpose ( ) ,
1198+ v1. transpose ( ) . as_view ( ) ,
1199+ v2. transpose ( ) . as_view ( ) ,
1200+ ) ;
1201+ approx:: assert_abs_diff_eq!( dist, 2.0 ) ;
1202+ }
1203+
1204+ #[ test]
1205+ fn test_get_total_intersection_area_ascending ( ) {
1206+ let middle = Vector2 :: from ( [ 13.230383286359404 , 57.91674149353457 ] ) ;
1207+ let vertices = nalgebra:: Matrix2xX :: from_columns ( & [
1208+ nalgebra:: matrix![ 13.4537632521754 , 63.48028248275224 ] . transpose ( ) ,
1209+ nalgebra:: matrix![ 15.117122610606705 , 57.68800580249031 ] . transpose ( ) ,
1210+ nalgebra:: matrix![ 11.317138703572038 , 56.705824689224265 ] . transpose ( ) ,
1211+ nalgebra:: matrix![ 0.0 , 66.38051863220002 ] . transpose ( ) ,
1212+ nalgebra:: matrix![ 0.0 , 72.0976802526207 ] . transpose ( ) ,
1213+ nalgebra:: matrix![ 4.57818363090394 , 69.66127890644572 ] . transpose ( ) ,
1214+ ] ) ;
1215+
1216+ let dr = 0.3 ;
1217+ let mut area = 0.0 ;
1218+ for n in 0 ..100 {
1219+ let radius = n as f64 * dr;
1220+ let area_new = get_total_intersection_area ( & middle, & vertices, radius) ;
1221+ assert ! ( area_new >= area) ;
1222+ area = area_new;
1223+ }
1224+ }
0 commit comments