@@ -1018,17 +1018,203 @@ def test_area(self):
1018
1018
1019
1019
self .assertEqual (21 , _rect .area )
1020
1020
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 )
1023
1153
1024
1154
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 )
1026
1168
1027
1169
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 )
1029
1203
1030
1204
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 )
1032
1218
1033
1219
def test_find_intersection_rect_poly_false (self ):
1034
1220
pass
0 commit comments