@@ -1018,17 +1018,203 @@ def test_area(self):
10181018
10191019 self .assertEqual (21 , _rect .area )
10201020
1021- def test_project_onto_axis (self ):
1022- pass
1021+ def test_project_onto_axis_horizontal_unshifted (self ):
1022+ _rect = rect2 .Rect2 (3 , 7 )
1023+
1024+ proj = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (1 , 0 ))
1025+
1026+ self .assertEqual (0 , proj .min )
1027+ self .assertEqual (3 , proj .max )
1028+ self .assertEqual (1 , proj .axis .x )
1029+ self .assertEqual (0 , proj .axis .y )
1030+
1031+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (- 1 , 0 ))
1032+
1033+ self .assertEqual (- 3 , proj2 .min )
1034+ self .assertEqual (0 , proj2 .max )
1035+ self .assertEqual (- 1 , proj2 .axis .x )
1036+ self .assertEqual (0 , proj2 .axis .y )
1037+
1038+ def test_project_onto_axis_vertical_unshifted (self ):
1039+ _rect = rect2 .Rect2 (5 , 11 )
1040+
1041+ proj = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (0 , 1 ))
1042+
1043+ self .assertEqual (0 , proj .min )
1044+ self .assertEqual (11 , proj .max )
1045+ self .assertEqual (0 , proj .axis .x )
1046+ self .assertEuqal (1 , proj .axis .y )
1047+
1048+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (0 , - 1 ))
1049+
1050+ self .assertEqual (- 11 , proj .min )
1051+ self .assertEqual (0 , proj .max )
1052+ self .assertEqual (0 , proj .axis .x )
1053+ self .assertEqual (- 1 , proj .axis .y )
1054+
1055+ def test_project_onto_axis_diagonal_unshifted (self ):
1056+ _rect = rect2 .Rect2 (1 , 3 )
1057+ _axis = vector2 .Vector2 (1 , 1 ).normalize ()
1058+
1059+ proj = rect2 .Rect2 .project_onto_axis (_rect , _axis )
1060+
1061+ self .assertAlmostEqual (0 , proj .min )
1062+ self .assertAlmostEqual (2.82842712472 , proj .max )
1063+ self .assertAlmostEqual (_axis .x , proj .axis .x )
1064+ self .assertAlmostEqual (_axis .y , proj .axis .y )
1065+
1066+ _axis2 = vector2 .Vector2 (- 1 , - 1 ).normalize ()
1067+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , _axis2 )
1068+
1069+ self .assertAlmostEqual (- 2.82842712472 , proj2 .min )
1070+ self .assertAlmostEqual (0 , proj2 .max )
1071+ self .assertAlmostEqual (_axis2 .x , proj .axis .x )
1072+ self .assertAlmostEqual (_axis2 .y , proj .axis .y )
1073+
1074+
1075+ def test_project_onto_axis_horizontal_shifted (self ):
1076+ _rect = rect2 .Rect2 (3 , 2 , vector2 .Vector2 (2 , 2 ))
1077+
1078+ proj = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (1 , 0 ))
1079+
1080+ self .assertEqual (2 , proj .min )
1081+ self .assertEqual (5 , proj .max )
1082+ self .assertEqual (1 , proj .axis .x )
1083+ self .assertEqual (0 , proj .axis .y )
1084+
1085+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (- 1 , 0 ))
1086+
1087+ self .assertEqual (- 5 , proj .min )
1088+ self .assertEqual (- 2 , proj .max )
1089+ self .assertEqual (- 1 , proj .axis .x )
1090+ self .assertEqual (0 , proj .axis .y )
1091+
1092+ _rect2 = rect2 .Rect2 (3 , 2 , vector2 .Vector2 (- 1 , 2 ))
1093+
1094+ proj3 = rect2 .Rect2 .project_onto_axis (_rect2 , vector2 .Vector2 (- 1 , 0 ))
1095+
1096+ self .assertEqual (- 2 , proj3 .min )
1097+ self .assertEqual (1 , proj3 .max )
1098+ self .assertEqual (- 1 , proj3 .axis .x )
1099+ self .assertEqual (0 , proj3 .axis .y )
1100+
1101+ def test_project_onto_axis_vertical_shifted (self ):
1102+ _rect = rect2 .Rect2 (4 , 7 , vector2 .Vector2 (1 , 3 ))
1103+
1104+ proj = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (0 , 1 ))
1105+
1106+ self .assertEqual (3 , proj .min )
1107+ self .assertEqual (10 , proj .max )
1108+ self .assertEqual (0 , proj .axis .x )
1109+ self .assertEqual (1 , proj .axis .y )
1110+
1111+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (0 , - 1 ))
1112+
1113+ self .assertEqual (- 10 , proj .min )
1114+ self .assertEqual (- 3 , proj .max )
1115+ self .assertEqual (0 , proj .axis .x )
1116+ self .assertEqual (- 1 , proj .axis .y )
1117+
1118+ _rect2 = rect2 .Rect2 (4 , 7 , vector2 .Vector2 (1 , - 2 ))
1119+
1120+ proj3 = rect2 .Rect2 .project_onto_axis (_rect , vector2 .Vector2 (0 , - 1 ))
1121+
1122+ self .assertEqual (- 5 , proj3 .min )
1123+ self .assertEqual (2 , proj3 .max )
1124+ self .assertEqual (0 , proj3 .axis .x )
1125+ self .assertEqual (- 1 , proj3 .axis .y )
1126+
1127+ def test_project_onto_axis_diagonal_shifted (self ):
1128+ _rect = rect2 .Rect2 (3 , 5 , vector2 .Vector2 (2 , 2 ))
1129+ _axis = vector2 .Vector2 (1 , 1 ).normalize ()
1130+
1131+ proj = rect2 .Rect2 .project_onto_axis (_rect , _axis )
1132+
1133+ self .assertAlmostEqual (2.82842712 , proj .min )
1134+ self .assertAlmostEqual (8.48528137 , proj .max )
1135+ self .assertAlmostEqual (_axis .x , proj .axis .x )
1136+ self .assertAlmostEqual (_axis .y , proj .axis .y )
1137+
1138+ _axis2 = vector2 .Vector2 (- 1 , - 1 ).normalize ()
1139+ proj2 = rect2 .Rect2 .project_onto_axis (_rect , _axis2 )
1140+
1141+ self .assertAlmostEqual (- 8.48528137 , proj2 .min )
1142+ self .assertAlmostEqual (- 2.82842712 , proj2 .max )
1143+ self .assertAlmostEqual (_axis2 .x , proj2 .axis .x )
1144+ self .assertAlmostEqual (_axis2 .y , proj2 .axis .y )
1145+
1146+ _rect2 = rect2 .Rect2 (3 , 5 , vector2 .Vector2 (- 1 , - 2 ))
1147+ proj3 = rect2 .Rect2 .project_onto_axis (_rect2 , _axis2 )
1148+
1149+ self .assertAlmostEqual (- 3.53553391 , proj3 .min )
1150+ self .assertAlmostEqual (2.12132034 , proj3 .max )
1151+ self .assertAlmostEqual (_axis2 .x , proj3 .axis .x )
1152+ self .assertAlmostEqual (_axis3 .y , proj3 .axis .y )
10231153
10241154 def test_contains_point_false (self ):
1025- pass
1155+ _rect = rect2 .Rect2 (1 , 2 , vector2 .Vector2 (2 , 2 ))
1156+
1157+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (0 , 0 ))
1158+ self .assertFalse (edge )
1159+ self .assertFalse (inner )
1160+
1161+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (4 , 2 ))
1162+ self .assertFalse (edge )
1163+ self .assertFalse (inner )
1164+
1165+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (2 , 5 ))
1166+ self .assertFalse (edge )
1167+ self .assertFalse (inner )
10261168
10271169 def test_contains_point_edge (self ):
1028- pass
1170+ _rect = rect2 .Rect2 (3 , 2 , vector2 .Vector2 (- 2 , - 2 ))
1171+
1172+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (- 2 , - 2 ))
1173+ self .assertTrue (edge , msg = "mincorner" )
1174+ self .assertFalse (inner )
1175+
1176+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (1 , - 2 ))
1177+ self .assertTrue (edge , msg = "corner" )
1178+ self .assertFalse (inner )
1179+
1180+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (1 , 0 ))
1181+ self .assertTrue (edge , msg = "maxcorner" )
1182+ self .assertFalse (inner )
1183+
1184+ edge , inner = rect .Rect2 .contains_point (_rect , vector2 .Vector2 (- 2 , 0 ))
1185+ self .assertTrue (edge , msg = "corner" )
1186+ self .assertFalse (inner )
1187+
1188+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (- 1 , - 2 ))
1189+ self .assertTrue (edge , msg = "y-min side" )
1190+ self .assertFalse (inner )
1191+
1192+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (0 , 0 ))
1193+ self .assertTrue (edge , msg = "y-max side" )
1194+ self .assertFalse (inner )
1195+
1196+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (- 2 , - 1 ))
1197+ self .assertTrue (edge , msg = "x-min side" )
1198+ self .assertFalse (inner )
1199+
1200+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (1 , - 0.5 ))
1201+ self .assertTrue (edge , msg = "x-max side, floating" )
1202+ self .assertFalse (inner )
10291203
10301204 def test_contains_point_contained (self ):
1031- pass
1205+ _rect = rect2 .Rect2 (4 , 5 , vector2 .Vector2 (3 , 3 ))
1206+
1207+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (5 , 6 ))
1208+ self .assertFalse (edge )
1209+ self .assertTrue (inner )
1210+
1211+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (5.5 , 6.5 ))
1212+ self .assertFalse (edge )
1213+ self .assertTrue (inner )
1214+
1215+ edge , inner = rect2 .Rect2 .contains_point (_rect , vector2 .Vector2 (4.5 , 7.5 ))
1216+ self .assertFalse (edge )
1217+ self .assertTrue (inner )
10321218
10331219 def test_find_intersection_rect_poly_false (self ):
10341220 pass
0 commit comments