Tue May 20 22:27:24 2025 quadrilateral_test(): python version: 3.10.12 numpy version: 1.26.4 quadrilateral() contains functions for geometric computations involving quadrilaterals. i4_wrap_test(): i4_wrap() forces an integer to lie within given limits. ILO = 4 IHI = 8 I i4_wrap(I) -10 5 -9 6 -8 7 -7 8 -6 4 -5 5 -4 6 -3 7 -2 8 -1 4 0 5 1 6 2 7 3 8 4 4 5 5 6 6 7 7 8 8 9 4 10 5 11 6 12 7 13 8 14 4 15 5 16 6 17 7 18 8 19 4 20 5 polygon_angles_test(): polygon_angles() computes the angles of a polygon. Number of polygonal vertices = 6 polygon vertices: [[0. 0.] [1. 0.] [2. 1.] [3. 0.] [3. 2.] [1. 1.]] Polygonal angles in degrees: 0 45 1 135 2 270 3 45 4 63.4349 5 161.565 quadrilateral_angles_test(): quadrilateral_angles() returns the angles of a quadrilateral in radians. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] angles: [1.57079633 1.57079633 1.57079633 1.57079633] Angles sum to 6.283185307179586 quadrilateral vertices: [[0. 0.] [1. 0.] [2. 1.] [0. 1.]] angles: [1.57079633 2.35619449 0.78539816 1.57079633] Angles sum to 6.283185307179586 quadrilateral vertices: [[0. 0. ] [1. 0. ] [0.25 0.25] [0. 1. ]] angles: [1.57079633 0.32175055 4.06888787 0.32175055] Angles sum to 6.283185307179586 quadrilateral vertices: [[ 0. 0. ] [ 1. 0. ] [-0.5 0.5] [ 0. 1. ]] angles: [1.57079633 0.32175055 5.17603659 5.49778714] Angles sum to 12.566370614359172 quadrilateral_area_test(): quadrilateral_area() finds the area of a quadrilateral quadrilateral_area2() finds the area of a quadrilateral quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] quadrilateral_area area is = 1.0 quadrilateral_area2 area = 1.0 quadrilateral_area_3d_test(): quadrilateral_area_3d() finds the area of a quadrilateral in 3D. quadrilateral vertices: [[2. 2. 0.] [0. 0. 0.] [1. 1. 1.] [3. 3. 1.]] Area is 2.8284271247461903 Area by 2 calls to triangle_area_3d() = 2.8284271247461903 quadrilateral_contains_point_test() quadrilateral_contains_point() tells if a point is inside a quadrilateral. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] P Contains Dist Dist Signed Unsigned 0.250000 0.250000 True 0.750000 0.250000 True 1.000000 1.000000 True 11.000000 0.500000 False 0.000000 0.500000 True 0.500000 -10.000000 False 2.000000 2.000000 False quadrilateral_is_convex_test(): quadrilateral_is_convex() is true if a quadrilateral is convex. quadrilateral vertices: [[ 0.6486147 0.21196855] [-0.09317763 0.49068892] [-1.4958888 -0.96264225] [ 1.10769316 -0.04978909]] quadrilateral_is_convex ( q ) = True quadrilateral vertices: [[-0.10597952 0.85237289] [-0.95344629 0.30997024] [-0.04838993 -0.23094161] [ 0.29385712 0.99666545]] quadrilateral_is_convex ( q ) = True quadrilateral vertices: [[-0.04370951 -0.25123578] [-1.16905283 -0.39660471] [-0.76571464 -1.26982734] [ 1.58296376 0.28863245]] quadrilateral_is_convex ( q ) = False quadrilateral vertices: [[-1.70960448 -1.20856452] [-0.85138889 -1.31066551] [-1.68132958 2.73476556] [-1.43017025 -0.49963452]] quadrilateral_is_convex ( q ) = False quadrilateral vertices: [[ 0.92912229 1.16528363] [-0.42903449 1.02656653] [-0.3899494 -0.29271774] [-0.39143845 -0.5588519 ]] quadrilateral_is_convex ( q ) = False quadrilateral_is_simple_test(): quadrilateral_is_simple() is true if a quadrilateral is "simple", that is, non-degenerate. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] quadrilateral_is_simple ( q ) = True quadrilateral vertices: [[0. 0.] [1. 0.] [2. 1.] [0. 1.]] quadrilateral_is_simple ( q ) = True quadrilateral vertices: [[0. 0. ] [1. 0. ] [0.25 0.25] [0. 1. ]] quadrilateral_is_simple ( q ) = True quadrilateral vertices: [[ 0. 0. ] [ 1. 0. ] [-0.5 0.5] [ 0. 1. ]] quadrilateral_is_simple ( q ) = False quadrilateral_perimeter_test(): quadrilateral_perimeter() computes the perimeter of a quadrilateral. quadrilateral: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] quadrilateral_perimeter = 4.0 quadrilateral: [[0. 0.] [1. 0.] [2. 1.] [0. 1.]] quadrilateral_perimeter = 5.414213562373095 quadrilateral: [[0. 0. ] [1. 0. ] [0.25 0.25] [0. 1. ]] quadrilateral_perimeter = 3.58113883008419 quadrilateral: [[ 0. 0. ] [ 1. 0. ] [-0.5 0.5] [ 0. 1. ]] quadrilateral_perimeter = 4.288245611270738 quadrilateral_point_dist_signed_test(): quadrilateral_point_dist_signed() computes the signed distance from a point to a quadrilateral. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] P Dist ( 0.250000 0.250000 ) -0.250000 ( 0.750000 0.250000 ) -0.250000 ( 1.000000 1.000000 ) 0.000000 ( 11.000000 0.500000 ) 10.000000 ( 0.000000 0.500000 ) 0.000000 ( 0.500000 -10.000000 ) 10.000000 ( 2.000000 2.000000 ) 1.000000 quadrilateral_point_dist_test() quadrilateral_point_dist() computes the distance from a point to a quadrilateral. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] P Dist ( 0.250000 0.250000 ) 0.250000 ( 0.750000 0.250000 ) 0.250000 ( 1.000000 1.000000 ) 0.000000 ( 11.000000 0.500000 ) 10.000000 ( 0.000000 0.500000 ) 0.000000 ( 0.500000 -10.000000 ) 10.000000 ( 2.000000 2.000000 ) 1.414214 quadrilateral_point_near_test() quadrilateral_point_near() computes the nearest quadrilateral point to a given point. quadrilateral vertices: [[0. 0.] [1. 0.] [1. 1.] [0. 1.]] P1 P2 ( 0.250000 0.250000) ( 0.250000 0.000000) ( 0.750000 0.250000) ( 0.750000 0.000000) ( 1.000000 1.000000) ( 1.000000 1.000000) ( 11.000000 0.500000) ( 1.000000 0.500000) ( 0.000000 0.500000) ( 0.000000 0.500000) ( 0.500000 -10.000000) ( 0.500000 0.000000) ( 2.000000 2.000000) ( 1.000000 1.000000) quadrilateral_random_test(): quadrilateral_random() returns a random quadrilateral within the unit square. quadrilateral vertices: [[-0.91741956 -1.94675916] [-0.37216281 0.20466901] [-0.43030031 0.75383781] [ 1.34758563 -1.22419256]] quadrilateral_is_simple ( q ) = False quadrilateral_is_convex ( q ) = False angles (in degrees): [301.91493657 159.73535029 324.09336336 294.25634978] Angle sum = 1080.0 Area = -2.670186693385502 Perimeter = 7.808754590180538 quadrilateral vertices: [[-1.27983153 0.52264159] [ 1.42432895 -0.55050478] [-0.07628063 0.09424494] [-0.0991823 0.57363795]] quadrilateral_is_simple ( q ) = True quadrilateral_is_convex ( q ) = False angles (in degrees): [ 24.11892549 1.60553314 244.01374086 90.26180051] Angle sum = 360.0 Area = 0.3501479343592314 Perimeter = 6.204264969459112 quadrilateral vertices: [[-1.51536072 -0.73841851] [-1.05114333 1.24942592] [ 0.47155861 1.07457714] [ 0.83517873 0.80417604]] quadrilateral_is_simple ( q ) = False quadrilateral_is_convex ( q ) = False angles (in degrees): [316.42039277 263.4058677 210.08536026 290.08837927] Angle sum = 1080.0 Area = -2.15228464551479 Perimeter = 6.8386952097383205 quadrilateral vertices: [[-0.24697022 -0.51495797] [ 0.28130789 0.38069542] [-1.45161119 -0.68594273] [-0.24005342 0.65050077]] quadrilateral_is_simple ( q ) = False quadrilateral_is_convex ( q ) = False angles (in degrees): [ 30.19309892 27.85393286 343.80692675 318.14604146] Angle sum = 720.0 Area = -0.20708170723162533 Perimeter = 6.044070971992156 quadrilateral vertices: [[ 0.18612721 -1.03768119] [-1.16822585 0.41715161] [-0.11134491 -0.34070637] [-0.40568414 -0.68286914]] quadrilateral_is_simple ( q ) = False quadrilateral_is_convex ( q ) = False angles (in degrees): [ 16.10430511 348.59468687 275.05997344 80.24103458] Angle sum = 720.0 Area = -0.10212343472878557 Perimeter = 4.429549107027365 quadrilateral_random_convex_test(): quadrilateral_random_convex() returns a random convex quadrilateral. quadrilateral vertices: [array([-0.25923904, -0.17329407, 0.67217812, 0.26038138]), array([ 0.61970114, -2.31190775, -1.00457705, 0.15944009])] quadrilateral_random_simple_test() quadrilateral_random_simple() returns a random simple quadrilateral. quadrilateral vertices: [[-1.0875796 0.8441756 ] [-1.12382804 -0.81046051] [-0.05546807 -0.91002597] [ 0.63031435 -1.63243814]] angles in degrees: [ 36.00195702 94.06929353 221.16575065 8.7629988 ] Angle sum = 360.0 Area = 1.114373374318585 Perimeter = 6.738199381167237 quadrilateral vertices: [[ 0.47935887 -0.72474265] [ 1.56809867 -0.80370377] [ 1.10863474 0.41166958] [ 0.39669211 -0.49064102]] angles in degrees: [113.59744713 65.14310164 58.98297596 122.27647527] Angle sum = 360.0 Area = 0.7641017904205006 Perimeter = 3.788550097620332 quadrilateral vertices: [[ 0.30544217 -0.38705282] [-0.09480668 -0.26232753] [-0.91864749 -0.96248372] [ 0.6783601 -1.59008733]] angles in degrees: [124.53049283 122.33179855 61.81434921 51.32335941] Angle sum = 360.0 Area = 1.0351005545366374 Perimeter = 4.475813580536334 quadrilateral vertices: [[ 1.05160964 -0.04260659] [ 0.87657435 1.72286717] [-0.07910311 -0.14798641] [ 2.33642716 -1.4160525 ]] angles in degrees: [217.4284227 32.7210516 90.63880052 19.21172518] Angle sum = 360.0 Area = 1.8515277590388317 Perimeter = 8.48380776787535 quadrilateral vertices: [[-0.22570211 0.30903494] [-0.57435316 -1.78339527] [ 0.68345607 0.30638981] [-0.67232334 0.36904138]] angles in degrees: [271.80776476 21.58308691 61.60271521 5.00643312] Angle sum = 360.00000000000006 Area = 0.9783231238382202 Perimeter = 6.368254657241383 segment_point_dist_test(): segment_point_dist() computes the distance from a point to a line segment. segment endpoint p1: [1. 2.] segment endpoint p2: [3. 4.] test point p: [2. 3.] Distance to segment = 0 test point p: [4. 5.] Distance to segment = 1.41421 test point p: [1. 4.] Distance to segment = 1.41421 test point p: [0. 0.] Distance to segment = 2.23607 segment_point_near_test(): segment_point_near() computes the nearest point from a line segment to a point in 2D. TEST = 0 P1 = 0.871896 0.258092 P2 = 0.925493 0.650382 P = 0.145549 0.147905 PN = 0.871896 0.258092 DIST = 0.734656 T = 0.000000 TEST = 1 P1 = 0.290930 0.645098 P2 = 0.618426 0.027460 P = 0.440931 0.624974 PN = 0.332177 0.567308 DIST = 0.123097 T = 0.125947 TEST = 2 P1 = 0.435994 0.680930 P2 = 0.542059 0.802970 P = 0.990146 0.022415 PN = 0.435994 0.680930 DIST = 0.860656 T = 0.000000 triangle_area_test(): triangle_area() computes the area of a triangle. Triangle vertices: [[0. 1.] [0. 0.] [1. 0.]] Triangle area is 0.5 triangle_area_3d(): triangle_area_3d() computes the area of a triangle in 3D. Triangle vertices: [[1. 2. 3. ] [2.4142137 3.4142137 3. ] [1.7071068 2.7071068 4. ]] Computed area is 1.0000000973169176 quadrilateral_test(): Normal end of execution. Tue May 20 22:27:24 2025