the systems and methods of this invention allow for a precise identification of the seating planes that allow the ball grid array package to sit in a stable manner , and at least one seating plane according to the definition in the standard for a ball - grid array package . a data set including the apices of all the balls of the ball - grid array is input to the ball - grid array seating plane system . the apex of each ball is nominally the point of that ball that is furthest from the array side of the ball - grid array package . strictly , the apex of each ball is the point on that ball that is closest to the ultimately - determined seating plane . thus , it may be necessary to measure a plurality of points on the small top crown area of each ball of the ball - grid array . this plurality of points should contain the apex of that ball . if only one point on each ball is measured , that point may not be the true apex , since the apex cannot be strictly determined before a seating plane is determined . the ball - grid array seating plane system fits a series of candidate planes to the input data points . each candidate plane can be defined by a triangle of three data points the ball - grid array seating plane system compares all candidate planes , and identifies the plane with the worst coplanarity , or the triangle having the largest area , as the seating plane . the ball - grid array seating plane with the worst coplanarity is in compliance with the definition in the standard . the ball - grid array seating plane with the largest area triangle might be used in some particular applications as this plane possesses the maximum stability . the systems and methods of this invention can be easily applied with these two different criteria . the methods and systems of this invention are also applicable to arrays of other types of connection elements on other electronic packages and substrates , and may generally be used whenever it is of interest to know which apices of a connector element array are the possible , or a likely , stable contact points for a mating array of connection points . that is , which apices of the connector element array determine the possible , or likely , seating planes for the connector element array . when a seating plane is known , the coplanarity of the connection element array may be determined , which provides an indication of whether all of the connection elements are likely to achieve reliable contact with a mating array of connection points , for a given assembly process . fig1 is an array - side view of an exemplary portion of a ball - grid array package 10 . the ball - grid array package 10 contains balls 15 attached to the array side of the ball - grid array package 10 . these balls 15 form the mechanical and electrical connection from the ball - grid array package 10 to , for example , a printed circuit board . fig2 is a side view of the portion of the ball - grid array package 10 shown in fig1 . as previously described , the balls 15 establish the mechanical and / or electrical connection between the ball - grid array package 10 and another surface , for example , a printed circuit board 30 . each ball 15 of the ball - grid array package 10 is a three dimensional ball attached to an array side 25 of the ball - grid array package . each of these balls 15 has an apex 20 which is furthest from the array side 25 of the ball - grid array package 10 . the apices 20 of the balls 15 are the points of the balls 15 that are measured when determining the seating plane . fig3 illustrates a ball - grid array package 10 having a seating plane 30 . this seating plane 30 is obtained by establishing a plane that passes through three or more apices 20 that are furthest from the array side 25 of the ball - grid array package 10 . fig4 illustrates a ball - grid array package 10 with a lowest ball reference plane 45 that is obtained by shifting a least means square plane 35 in a first direction normal to the least mean square plane 35 and away from the array side 25 of the ball - grid array package 10 until the shifted least mean square plane 45 contacts the apex 47 of the ball 15 that is furthest away from the least mean square plane 35 in the first direction . this plane is commonly used as a substitute for the seating plane in semiconductor applications . fig5 illustrates a ball - grid array seating plane system 100 . the ball - grid array seating plane system 100 comprises a ball - grid array ball measuring system 110 and a ball - grid array seating plane determining system 120 connected by a link 130 . the ball - grid array measuring system 110 determines a set of data points corresponding to the apices of each of the ball - grid array package balls 15 and defines a distance from each of the apices of the balls to a reference plane . upon determining a data point for each of these balls , the data , i . e ., the distance from the apices of the balls to the reference plane , is forwarded over the link 130 to the ball - grid array seating plane determining system 120 . the ball - grid array seating plane determining system 120 determines the seating plane based on a plane defined by three or more of the data points that have the worst coplanarity and / or the largest area of the resulting triangle . fig6 illustrates in greater detail one exemplary embodiment of the ball - grid array seating plane determining system 120 . specifically , in this exemplary embodiment , the ball - grid array seating plane determining system 120 comprises a controller 140 , a memory 150 , a search angle determining circuit 160 , a point determining circuit 170 , a projection plane determining circuit 180 , a line rotating circuit 190 , a coplanarity determining circuit 200 , a least mean square plane determining circuit 210 , a line determining circuit 220 , a plane determining circuit 230 , a plane rotating circuit 240 and a sweep angle determining circuit 250 , all connected by a data / control bus 260 . the ball - grid array seating plane determining system 120 receives the set of data points from the ball - grid array measuring system 110 over the link 130 . with reference to fig7 the set of data points is input to the ball - grid array seating plane determining system 120 and stored in the memory 150 . at the direction of the controller 140 , the least mean square plane determining circuit 210 determines a least mean square plane p start for the set of data points . the least mean square plane determining circuit 210 then shifts the least mean square plane p start to contact the data point t start that is furthest from the least mean square plane , in a direction that is normal to the least mean square plane and away from the array side 25 of the ball - grid array package 10 . this is an exemplary plane . in general , any p start plane that includes one data point furthest away from the array side 25 of the ball - grid array package in a direction normal to the plane , such that all other data points lie on the side of that plane toward the substrate of the connection elements , can be used . the line determining circuit 220 then arbitrarily establishes an initial line l r in the shifted least mean square plane p start . the sweep angle θ , stored in the memory 150 , and the search angle α , stored in the memory 150 , are both set to 0 at the beginning of processing . then , the plane determining circuit 230 sets a test plane p 1 equal to the shifted least mean square plane p start and the point determining circuit 170 sets a first test point t 1 equal to the furthest data point t start . the line determining circuit 220 then creates an arbitrary line l 1 in the test plane p 1 that passes through the first test point t 1 . the line rotating circuit 190 rotates the test line l 1 until the angle between the test line l 1 and the initial line l r is equal to the sweep angle θ . as shown in fig8 the projection plane determining circuit 180 then establishes a first projection plane pj 1 that is perpendicular to both the test plane p 1 and the first test line l 1 . the projection plane determining circuit 180 , in cooperation with the point determining circuit 170 and the memory 150 , then projects the data points and the test plane p 1 onto the first projection plane pj 1 . the plane determining circuit 230 , using the test point t 1 as a pivot point , rotates the test plane p 1 , which becomes a line after it has been projected into the first projection plane pj 1 , in a chosen direction , such as a counter - clockwise direction in the first projection plane pj 1 until the test plane p 1 contacts a second test point t 2 within the projection plane pj 1 . the second test point t 2 is then stored in the memory 150 . then , as shown in fig9 the line determining circuit 220 defines a second test line l 2 that passes through the first and second test points t 1 and t 2 . the controller 140 then sets a second test plane p 2 equal to the rotated first test plane p 1 . it should be noted that the arbitrary line l 1 , the sweep angle θ , the test plane p 1 , the first projection plane pj 1 , the second test line l 2 , and the other accompanying constructs , as well as the “ rotations ” described above , form an exemplary systematic method for establishing a second test plane , but not the only method . the “ rotations ” described herein are simply one way of describing or visualizing the conditions that the second test plane needs to fulfill in order to support this exemplary systematic method . the effect of a “ rotation ” may be achieved without actually implementing rotation as a search method in a computing algorithm . for example , the second test plane can be directly established as a plane perpendicular to the first projection plane that includes the furthest data point , and the point whose projection into the first projection plane lies closest to the projection of the first test plane into the first projection plane . in general , the second test plane is a plane that contacts both the furthest data point and a second data point , all other data points lying on a single side of the plane , where the furthest data point and the second data point are furthest from the substrate in a direction normal to the test plane . for purposes of supporting a systematic searching procedure in the following steps , the preferred second test plane also lies at the smallest rotation angle relative to the first test plane , hence the use of the term “ rotation ” in relation to a plane used in the above - outlined description of an exemplary method . any method that identifies such a second test plane is acceptable and useful in this systematic method . the search angle determining circuit 160 then sets the search angle α equal to α plus the angle in the projection plane pj 1 between the first test plane p 1 and the second test plane p 2 . the search angle determining circuit 160 then determines if the search angle α is greater than a preset threshold search angle α t , if the search angle α is greater than the preset threshold search angle α , the search angle determining circuit 160 resets the search angle to zero , while the sweep angle determining circuit 250 sets the sweep angle θ to : the sweep angle determining circuit 250 then checks whether the sweep angle θ is greater than 360 °. if the sweep angle θ is greater than 360 °, in this exemplary procedure searching for additional seating planes stops and the plane having either the worst coplanarity and / or a triangle having the largest area is selected as the seating plane , as discussed below . if the search angle α is not greater than the preset threshold search angle α t , the projection plane determining circuit 180 establishes a second projection plane pj 2 that is perpendicular to the second test plane p 2 and the second test line l 2 . the projection plane determining circuit 180 , in cooperation with the point determining circuit 170 and the memory 150 , then projects the data points and the second test plane p 2 into the projection plane pj 2 . the second test line l 2 is then projected into the second projection plane pj 2 as a point , while the second test plane p 2 is projected into the second projection plane pj 2 as a line . the plane rotating circuit 240 rotates the projected second test plane p 2 in the second projection plane pj 2 using the projected second test line l 2 as a pivot . in particular , as shown in fig1 , the plane rotating circuit 240 rotates the projected second test plane p 2 about the projected second test line l 2 in a chosen direction , such as a counter - clockwise direction until the projected second test plane p 2 contacts a third test point t 3 . the plane determining circuit 230 then uses the test points t 1 , t 2 and t 3 to define a third test plane p 3 . then , the plane rotating circuit 240 rotates the projected test plane p 2 in the opposite direction in the second projection plane pj 2 using the projected second test line l 2 as a pivot . in particular , the plane rotating circuit 240 rotates the projected second test plane p 2 about the projected second test line l 2 in a clockwise direction , if the previously chosen direction was counter - clockwise , until the projected second test plane p 2 contacts a fourth test point t 4 ( not shown ). the plane determining circuit 230 then uses the test points t 1 , t 2 and t 4 to define a fourth test plane p 4 ( not shown ). it should be noted that the second projection plane pj 2 , and other accompanying constructs , as well as the “ rotations ” described above , form an exemplary systematic method for establishing third and fourth test planes . the “ rotations ” described herein are simply one way of describing or visualizing the conditions that the third and fourth test planes need to fulfill in order to support this exemplary systematic method . the effect of a “ rotation ” may be achieved without actually implementing rotation as a search method in a computing algorithm . for example , the third test plane can be directly established to be a plane that includes the furthest data point , the second data point , and the point whose projection into the second projection plane lies closest to the second test plane . in general , the third and fourth test planes are planes that contact the furthest data point , the second data point , and a third data point , with all other data points lying on a single side of the plane , where the farthest data point and the second and third data points are furthest from the substrate in a direction normal to the test plane . furthermore , for purposes of supporting a systematic searching procedure in the following steps , the preferred third and fourth test planes are also the two planes which lie at the smallest rotation angles relative to the second test plane . any method that identifies such third and fourth test planes is acceptable and useful in this systematic method . next , in this exemplary method , the coplanarity determining circuit 200 checks the triangle r 1 formed by the test points t 1 , t 2 and t 3 and the triangle r 2 formed by the test points t 1 , t 2 and t 4 to determine if either the triangle r 1 and / or the triangle r 2 contains the center of gravity of the ball - grid array package 10 . a center of gravity is defined as the fixed point in a material body through which the resultant force of gravitational attraction acts . thus , the center of gravity of the ball - grid array package 10 is a point within the ball - grid array package 10 through which the resultant force of gravitational attraction acts . in other words , the center of gravity of the ball - grid array package 10 is a point within the ball - grid array package 10 at which all of the gravitational forces on the ball - grid array package 10 would be balanced if the ball - grid array package 10 were suspended from that point . a triangle formed by the test points “ contains ” the center of gravity of the ball - grid array package 10 when a line that passes through the center of gravity of the ball - grid array package 10 and that is normal to the test plane containing that triangle also passes through an edge or the interior of the triangle . for each triangle r 1 and / or r 2 that contains the center of gravity , the area of that triangle r 1 and / or r 2 , and / or the coplanarity of the test plane p 3 or p 4 that contains that triangle r 1 or r 2 that contains the center of gravity , is determined and stored . however , if both of the triangles r 1 and r 2 are determined to contain the center of gravity , the triangle r 1 or r 2 with the larger area and / or the corresponding test plane p 3 or p 4 having the greater coplanarity is used . thus , the test plane p 3 or p 4 having the greater coplanarity and / or containing the triangle r 1 or r 2 having the greater area is stored in the memory 150 as the current potential seating plane s . in this exemplary systematic method , the plane determining circuit 170 then replaces the first test point t 1 with the second test point t 2 and the plane determining circuit 170 replaces the first test plane p 1 with the second test plane p 2 and repeats the above - outlined procedure . that is , the second test point t 2 becomes the first test point t 1 , and the second test plane p 2 becomes the first test plane p 1 for the next iteration of the above - described procedure . the line determining circuit 220 then creates a new first test line l 1 that passes through the first test point t 1 and that is parallel to a line rotated away from the initial line l r in the initial first test plane p 1 by the sweep angle θ . as illustrated in fig8 the process is then repeated from the point when the projection plane determining circuit 180 forms the first projection plane pj 1 . however , as previously noted and as shown in fig8 if the search angle determining circuit 160 determines , after projecting the data points into the first projection plane pj 1 , that the search angle α is greater than a preset threshold search angle α t , the sweep angle determining circuit 250 sets the sweep angle θ equal to the current sweep angle θ plus a preset increment δθ . the sweep angle determining circuit 250 then determines if the sweep angle θ is greater than 360 °. if the sweep angle is less than 360 °, the system resets itself by setting the test plane p 1 equal to the shifted least mean square plane p start and setting the first test point t 1 equal to the data point t start . the search angle α is then set to zero and the process is repeated until the sweep angle θ monitored by the sweep angle determining circuit 250 exceeds 360 °. upon the sweep angle determining circuit 250 determining that the sweep angle θ is greater than 360 °, the controller 140 retrieves from memory 150 the potential seating plane s having the greatest coplanarity and / or having a triangle formed by the corresponding points t 1 , t 2 and t 3 or t 4 having the greatest area . this potential seating plane s is selected as the actual seating plane s . fig1 a - 11c is a flowchart outlining one exemplary embodiment of the method for determining a seating plane according to this invention . control begins in step s 1000 . in step s 1100 , the data points , i . e ., the lateral positions of the apices and the distance from the apices of the balls to the reference plane , are input . next , in step s 1200 , a least mean square plane p start for the set of data points is determined . then , in step s 1300 , the least mean square plane p start is shifted along a line normal to the least mean square plane p start until the least mean square plane p start contacts the data point t start that is furthest from the least mean square plane in the normal direction and away from the array side 25 of the ball - grid array package 10 . control then continues to step s 1400 . in step s 1400 , an initial line l r is arbitrarily established in the shifted least mean square plane p start . next , in step s 1500 , the sweep angle θ is set to 0 . then , in step s 1600 , the test plane p 1 is set to the shifted least mean square plane p start and the first point t 1 is set to the furthest data point t start . control then continues to step s 1700 . in step s 1700 , the search angle α is set to 0 . next , in step s 1800 , a line l 1 is created in the test plane p 1 which passes through the first test point t 1 . next , in step s 1900 , the test line l 1 is rotated until the angle between the test line l 1 and the initial line l r is equal to the sweep angle θ . then , in step s 2000 , a projection the plane pj 1 is established that is perpendicular to both the test plane p 1 and the first test line l 1 . control then continues to step s 2100 . in step s 2100 , the data points and the test plane p 1 are projected onto the first projection plane pj 1 . next , in step s 2200 , using the first test point t 1 as a pivot , the test plane p 1 , which is actually a line once projected into the first projection plane pj 1 , is rotated in a counter - clockwise direction in the first projection plane pj 1 until the test plane p 1 contacts a second test point t 2 within the projection plane pj 1 . then , in step s 2300 , a second test plane p 2 is set equal to the rotated first test plane p 1 . control then continues to step s 2400 . in step s 2400 , the search angle α is set equal to the search angle α plus the angle in the projection plane pj 1 between the first test plane p 1 and the second test plane p 2 . next , in step s 2500 , a determination is made whether the search angle α is greater than a preset threshold search angle α t . if the search angle α is greater than a preset threshold search angle α t , control jumps to step s 3400 . otherwise , control continues to step s 2600 . in step s 2600 , a second projection plane pj 2 is established that is perpendicular to a second test line l 2 formed by the test point t 1 and the test point t 2 . next , in step s 2700 , the data points , the second test plane p 2 and the second test line l 2 are projected into the second projection plane pj 2 . in particular , the second test plane l 2 is projected into the second projection plane pj 2 as a point , while the second test plane p 2 is projected into the second projection plane pj 2 as a line . then , in step s 2800 , the projected second test plane p 2 is rotated in the second projection plane pj 2 using the projected second test line l 2 as a pivot . in particular , the projected second test plane p 2 is rotated about the projected second test line l 2 in a counter - clockwise direction until the projected second test plane p 2 contacts a third test point t 3 . then , in step s 2900 , the test points t 1 , t 2 and t 3 are used to define a third test plane p 3 . control then continues to step s 3000 . in step s 3000 , the projected test plane p 2 is rotated in the second projection plane pj 2 clockwise about the projected second test line l 2 as a pivot . in particular , the projected second test plane rotated p 2 about the projected second test line l 2 in a clockwise direction until the projected second test plane p 2 contacts a fourth test point t 4 . next , in step s 3100 , the test points t 1 , t 2 and t 4 are used to define a fourth test plane p 4 . then , in step s 3200 , the triangle r 1 formed by the test points t 1 , t 2 , and t 3 and the triangle r 2 formed by the test points t 1 , t 2 and t 4 are checked to see if either or both contain the center of gravity of the ball - grid array . then , in step s 3300 , the first test point t 1 is replaced with the second test point t 2 and the first test plane p 1 with the second test plane p 2 . that is , the second test point t 2 becomes the first test point t 1 , and the second test plane p 2 becomes the first test plane p 1 . control thenjumps back to step s 1800 . in step s 3400 , the sweep angle θ is set equal to the sweep angle θ plus a preset sweep angle increment δθ . next , in step s 3500 , a determination is made whether the sweep angle θ is greater than 360 °. if the sweep angle θ is not greater than 360 °, control jumps back to step s 1600 . otherwise , control continues to step s 3600 . in step s 3600 , the test plane having the worst coplanarity and / or containing the triangle having the greatest area defined by the points t 1 , t 2 and either t 3 or t 4 and is selected as the seating plane s . the points defining this triangle also defines the seating plane s . control then continues to step s 3700 where the control sequence ends . fig1 illustrates in greater detail the potential seating plane determining step s 3200 of fig1 b . as shown in fig1 , control begins in step s 3200 . next , in step s 3210 , a determination is made whether the center of gravity is contained within the triangle r 1 formed by the test points t 1 , t 2 and t 3 . if the center of gravity is contained within the triangle r 1 , control continues to step s 3220 . otherwise , control jumps to step s 3260 . in step s 3220 , a determination is made whether the center of gravity is also contained within the triangle r 2 formed by the test points t 1 , t 2 and t 4 . if the center of gravity is also within the triangle r 2 , control continues to step s 3230 . otherwise , control jumps to step s 3250 . in step s 3230 , a determination is made whether the area of the triangle r 1 is greater than the area of the triangle r 2 and / or if the coplanarity of the plane defined by the triangle r 1 is worse than the coplanarity of the plane defined by the triangle r 2 . if the area of triangle r 1 is greater than the area of triangle r 2 and / or if the coplanarity of the plane defined by the triangle r 1 is worse than the coplanarity of the plane defined by triangle r 2 , control jumps to step s 3650 . otherwise , control continues to step s 3240 . in step s 3240 , the test plane p 4 , and the area corresponding to the triangle r 2 , is stored as the potential seating plane . control then jumps to step s 3280 . in contrast , in step s 3250 , the test plane p 3 , and the corresponding area to the triangle r 1 , is stored as the potential seating plane . control then jumps to step s 3280 . in step s 3260 , a determination is made whether the center of gravity falls within the triangle r 2 . if the center of gravity is within the triangle r 2 , control continues to step s 3270 . otherwise , control jumps to step s 3280 , where control returns to step s 3300 . in step s 3270 , the area of the triangle r 2 and / or the coplanarity of the plane formed by the triangle r 2 is stored . control then continues to step s 3280 . as shown in fig5 and 6 , the ball - grid array seating plane determining system 120 is preferably implemented on a program and general purpose computer . however , the ball - grid array seating plane determining system 120 can also be implemented on a special purpose computer , a programmed microprocessor or microcontroller and peripheral integrated circuit element , an asic or other integrated circuit , a digital signal processor , a hard wired electronic or logic circuit such as a discrete element circuit , a programmable logic device such as a pld , pla , fpga or pal , or the like . in general , any device , capable of implementing a finite state machine that is in turn capable of implementing the flowcharts as shown in fig1 a - 11c and 12 can be used to implement the ball - grid array seating plane determination system 120 . the links 130 and 260 can be any wired or wireless link , or any known element that is capable of supplying electronic data to and from the connected elements . it should be appreciated that after determining and shifting the least mean square plane p start to contact the furthest data point t start , that more than one furthest data point may be on the shifted least mean square plane p start . if this occurs , for reasons of computational efficiency , the above method can be modified to provide more efficient processing . in particular , in the case where three or more data points fall on the shifted least mean square plane p start , the three data points that make the largest triangle are selected . if the center of gravity falls within this triangle , the triangle is saved as being a potential seating plane . processing then continues in accordance with above - outlined procedure by arbitrarily establishing an initial line l r in the shifted least mean square plane p start and selecting the point which allows for rotating of the shifted least mean square plan while maintaining all the data points on one side of the shifted least mean square plane . alternatively , if two points are immediately located on the shifted least mean square plane p start , these two points can immediately be set as the line l 2 . processing would then continue as outlined above by rotating the line l 2 until the angle between the line l 2 and the initial line l r is equal to the sweep angle θ . selection of the second text point t 2 would then be accomplished by selecting the point which allows for rotation of the shifted least means square plane while maintaining all the data points on one side of the shifted least mean square plane . while this invention has been described in conjunction with the exemplary embodiments outlined above , it is evident that many alternatives , modifications and variations will be apparent to those skilled in the art . for example , the electronic connection elements whose apices are analyzed need not necessarily be those of a conventional ball grid array . any array of connection elements such as pins , surface mount connection pads , spring - contact connection elements , or the like may be similarly analyzed . furthermore , the connection elements may be located on a discrete electronic package , a silicon wafer , a silicon die , a printed circuit board , a hybrid circuit , or the like . furthermore , the foregoing exemplary method of searching for potential seating planes of practical significance is a systematic and computationally efficient method . however , many of the plane identification teachings included herein are still useful if applied in conjunction with other methods for exhaustive searching and screening , such as those allowing redundant computations , point - by - point computations , trial and error screening , and the like . accordingly , the preferred embodiments of the invention as set forth above , are intended to be illustrative , not limiting . various changes may be made without departing from the spirit and scope of the invention .