POSITION-SENSING APPARATUS

Abstract: Position-sensing apparatus is provided which includes a passive coded surface formed by a pattern element (14) with an arrangement of indicia that together form a two-dimensinal windowing pattern (20); by "windowing pattern" is meant a pattern having the property that any local portion of the pattern of given size in terms of pattern features (a "sub-pattern"), when considered in isolation, is so characterized by its features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern. The apparatus further includes an indicator element (11) movable across the pattern (20), and a sub-pattern detector (12) with a sensor (16) for sensing the pattern indicia in the locality of the indicator element (11). The detector (12) is operative to process the output of the sensor (16) to derive sub-pattern data representative of a sub-pattern local to the indicator element (11) in an orientation enabling its position to be uniquely determined. The sub-pattern data is passed to a position-determining unit (13) which uses this data, together with data on the overall pattern, to determine the position of the indicator element (11) relative to the pattern element (14).

Description: POSITION-SENSING APPARATUS TECHNICAL FIELD The present invention relates to position-sensing apparatus and in particular, but not exclusively, to apparatus for sensing the position of an indicator element over a two- dimensional patterned surface by detecting pattern features of the surface. BACKGROUND ART It is known to detect linear position by providing a linear pattern that encodes a pseudo-random binary sequence (PRBS, also known as an "m-sequence") and then using the window property of such a sequence to effect position detection by detecting a window-length subsequence of the pattern. An example of such a system is described in the article "New Pseudorandom/Natural Code Conversion Method" by E. M. Petriu appearing in Electronic Letters 27th October 1988 Vol.24 No.22. By "window property" is meant the property that for a PRBS of length (2 -l), where k is an integer, any subsequence of length k will be unique and therefore uniquely locatable in the sequence; this and other properties of PRBSs are described, for example, in the article "Pseudo-Random Sequences and Arrays" by F. Jessie Mac Williams and Neil J. A. Sloane appearing in the Proceedings of the IEEE, Vol.64, No.12 December 1976. The prior-art systems utilising the window-property of a PRBS for position sensing are essentially limited to linear position-sensing, although the path followed by the PRBS pattern may, of course, be other than rectilinear (for example, circular or serpentine). It is an object of the present invention to provide position-sensing apparatus for sensing position over a two-dimensional surface. DISCLOSURE OF THE INVENTION According to one aspect of the present invention, thereis provided position-sensing apparatus comprising: - a pattern element with an arrangement of indicia that together present a two-dimensional pattern having features that make said pattern a windowing pattern in that any local portion of the pattern of given extent in terms of its features (herein a "sub-pattern"), when considered in isolation, is so characterized by said features as to permit the location of the sub-pattern to be determined, for at least one orientation of the sub-pattern relative to said pattern; an indicator element movable relative to said pattern element across said arrangement of indicia; sub-pattern detector means including sensor means for sensing said indicia in the locality of said indicator element, the detector means being operative to process the output of the sensor means to derive sub-pattern data representative of a sub-pattern local to said indicator element in a said at least one orientation of the sub-pattern relative to said pattern; and - position-determining means including a memory holding pattern data representative of said windowing pattern, the position-determining means being responsive to the sub-pattern data derived by said detector means to determine, by reference to said pattern data, the position of said indicator element relative to said pattern element. Preferably, in said position-sensing apparatus: (a) said features of the pattern discemibly form a regular arrangement for which when any given sub-pattern of said pattern is considered in isolation from the pattern, that sub-pattern may be in any of M possible orientations relative to the pattern where M is a positive integer greater than zero; (b) said windowing pattern is such that any given sub-pattern can be correctly located in the pattern for N of said M possible orientations where N is a positive integer in the range 0 < N < M; and (c) said sub-pattern detector means is responsive to the said regular arrangement of features to identify a said sub-pattern in the locality of said indicator element, and to provide sub-pattern data to said position- determining means which is representative of the said sub-pattern in one of said N of said M possible orientations relative to the pattern in which it can be correctly located. Advantageously, said features are discemibly arranged in rows and columns extending parallel to respective first and second coordinate axes with each feature being presented in a notional cell that has line contact with a plurality of neighbouring such cells. A rectangular pattern of cells is preferred for which each said cell has line contact wtih four neighbouring cells, M has a value 4, and N has one of the values 1,2 and 4. Said features may serve to encode at least part of a two-dimensional windowing array having rows and columns of elements notionally extending parallel to said first and second coordinate axes respectively. One suitable form of array is a pseudo-random binary array. Another suitable form of array can be formed from first and second binary sequences of length m and n respectively, where m and n are positive integers greater than zero, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to 2 n+1 , by considering the value of the (i-l)th element of the second sequence, and - if the (i-l)th element has a first binary value, forming the said (i)th column from said first sequence unshifted relative to the (i-l)th column, if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column. A further form of array can be formed by combining together two windowing sequences that extend parallel to respective ones of said first and second coordinate axes, each element of said array representing a particular combination of values of corresponding elements of said sequences. Where the features serve to encode an array, the value of each element of said array is preferably encoded as a corresponding feature value. Preferably, the pattern features serve to encode a first windowing sequence of elements notionally extending parallel to said first coordinate axis and a second windowing sequence of elements notionally extending parallel to said second coordinate axis. In this case, said sequences may be selected from the group of sequences comprising: (a) de Bruijn sequences; (b) pseudo-random binary sequences; (c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and (d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not. Advantageoulsy , where two sequences are encoded, each element of each said sequence is encoded as a corresponding change in feature value when moving between neighbouring cells in a direction parallel to the direction of extent of the corresponding said sequence. In one implementation, the encoding of said element values is such as to ensure that each said feature is distinguished by its value from at least one specific neighbour with which it has line contact; in fact, said encoding may be such as to distinguish each feature by value from all its neighbours with which it makes line contact. Indeed, the encoding of said element values may also ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact. Alternatively, each said feature may be separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattern detector means. that is detectable as such by said sub-pattern detector means. Preferably, said sensor means is movable with said indicator element and is operative to sense a portion of said pattern corresponding to a single said feature, said apparatus including spatial-information means for providing said sub-pattern detector means with spatial information regarding the relative disposition of adjacent element- value encoding features, and said sub-pattern detector means being operative to use said spatial information to build up said sub-pattern data relating to a whole sub-pattern as the sensor means is moved over the pattern. Advantageously, said spatial-information means comprises features of said pattern sensible by said sensor means as it is moved between said element-value encoding features; in particular, said spatial-information can be encoded into the values represented by said element-value encoding features. In certain implementations, the spatial information provided to said sub-pattern detector means may only be partial and in such cases the detector means can be made operative to assume an unchanging direction of movement of said sensor means across said pattern unless and until, following initial position determination, an inconsistency is determined between said pattern data and sub-pattern data. Generally, the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, will be variable. Prferably , therefore, said apparatus includes orientation-information means for providing said sub-pattern detector means with orientation information about said relative orientation, the sub- pattern detector means utilizing this information in deriving said sub-pattern data representative of a sub-pattern orientated in a said at least one orientation. Advantageously, said orientation-information means comprises features of said pattern sensible by said sensor means as it is moved between said element-value encoding features; in particular, said orientation information may be encoded into the values represented by said element- value encoding features. Preferably, following an initial determination of the location of said indicator element, any incremental change in the pattern portion sensed by said sensing means, is used by said position-determining means to provide an updated location based on the incremental change in location of the indicator element indicated by said change in the sensed pattern portion. In case where said pattern is an encoding of two windowing sequences of elements notionally extending along respective first and second coordinate axes, said position-determining means is advantageously operative to update the location of said indicator element along said first and second coordinate axes separately, based on any incremental change in location along the corresponding coordinate axis indicated by a change in the element or elements of the corresponding sequence represented by said sensed pattern portion; said position-determining means in incrementing the location of said indicator element along at least one said coordinate axis, assuming an unchanged direction of movement therealong unless and until the said element or elements of the sequence extending along said one coordinate axis that are represented by said sensed pattern portion, differ from that predicted from the stored pattern data relating to that sequence having regard to the current location in the sequence as previously determined by said position-determining means, said position- determining means upon detecting a difference between the sensed and predicted sequence elements, being further operative to enter a recovery process to recover its location along said one coordinate axis, said recovery process involving deriving at least one candidate location for the indicator element on the basis that the direction of movement of the indicator element has been reversed, and directly or indirectly comparing the element or elements sensed along the track of the indicator element with those predicted to lie along the indicator-element track in reaching the or each said candidate location whereby to test the validity of the or each such location. Preferably, said indicator element is a hand-holdable stylus carrying said sensor means. In one embodiment, the pattern element is a planar member carrying said indicia, both the planar member and said indicia being transparent to visible light whereby to permit viewing of items through the pattern element. In another embodiment, the pattern element is a planar member carrying said indicia, said indicia being transparent to visible light and said stylus being a marking stylus capable of depositing a marking substance on a surface of said planar member at which said indicia can be sensed by said sensor means, said working substance being optically visible but permitting the sensing of said indicia therethrough. In a still further embodiment, the pattem element is a planar member carrying said indicia, said apparatus further comprising a markable sheet positioned over said planar member, said sheet being at least partially opaque and permitting said indicia to be sensed therethrough by said sensor means, and said stylus being a marking stylus capable of depositing a marking substance on said sheet which substance is optically discernible against said sheet but permits the sensing of said indicia therethrough. It will be appreciated that the present invention also separately encompasses pattem elements per se for use in position-sensing apparatus, the pattem elements having the characteristics described above in relation to the apparatus as a whole. BEST MODEFOR CARRYING OUTTHE INVENTION General Form of Position-sensing Apparatus As shown in Figure 1, the position-sensing apparatus comprises a pattem element 10 marked with a two-dimensional pattem 20, a sensing stylus 11 for sensing a sub-pattern of the pattem 20, a sub-pattern image processing unit 12 fed with the output of the stylus 11, and a position-determining unit 13 connected to the output of the unit 12 and operative to provide an output signal indicative of the position of the stylus over the pattem 20. The pattem element 10 takes the form of a planar support member 14 carrying on one surface an arrangement of indicia 15 (see inset in Figure 1 which is an enlarged view of a portion of the surface of the member 14); the indicia 15 together present the pattem 20. In the Figure 1 embodiment, the pattem 20 is made up of a rectangular arrangement of indicia 15, the indicia being in the form of printed markings sensible by their optical/infra-red reflective characterisitcs. However, it is to be understood that the indicia may be arranged in a variety of other configurations and may be sensible by any suitable characteristic including by their surface roughness, magnetic parameters, electrical parameters, optical/infra-red transmissivity etc. The pattem 20 is a windowing pattem in the sense that any local portion of the pattem of given extent in terms of its pattem features, when considered in isolation, is so characterised by its features as to permit the location of that pattem portion to be determined in the pattem, at least for a known orientation of the pattem portion relative to the pattem as a whole. A pattem portion of such an extent as to permit its location to be determined is referred to herein as a "sub-pattern". In its broadest conception, the windowing pattem 20 may be constituted, for example, by a picture of an irregular subject (such as a portrait or landscape) since a sub-area of such a picture, provided it is of sufficient extent, will be uniquely locatable within the picture. However, the primary focus of the present invention is on patterns with a regular arrangement of features that encode underlying mathematical arrays or sequences with known properties. Of particular interest are windowing patterns with rectangular arrangements of features (that is, features running in rows and columns parallel to respective coordinate axes - note that although these axes may or may riot be normal to each other, the term "rectangular pattem" is used herein to cover both situations). The rectangular patterns described hereinafter are encodings either of two dimensional windowing arrays or of pairs of orthogonal windowing sequences; in the former case, a sub-pattem takes the form of a rectangular area of the pattem, whereas in the latter case, a sub-pattem takes the form of two orthogonal linear segments of the pattem. The sensing stylus 11 serves the dual function of an indicator element for pointing to a particular location on the pattem 20, and a sensor for sensing the indicia J-5 in the locality of the stylus in order to detect a sub-pattem at the location pointed to by the stylus 11. In the present embodiment, the stylus is intended to be handheld and is movable freely over the pattem without any constraint being placed on its orientation about an axis perpendicular to the pattem. However, other embodiments are possible where the stylus is mounted, for example, on a X-Y carriage and has a fixed orientation relative to the pattem; furthermore, the two functions of the sensing stylus 11 need not be performed by the same physical unit. The stylus 11 includes a sensing head 16 of a form suitable to detect the indicia physical property used to provide the pattem features; in the present embodiment the sensing head 16 is an optical sensor. Processing of the output of the sensing head is effected by the sub-pattem image processing unit 12. Given that the objective is to detect a complete sub-pattem in the locality of the stylus 11, three main approaches are possible to pattem sensing. The first approach is to sense an area of the pattem 20 sufficiently large as to include a whole sub-patte at one time (the resolution of the sensing head 16 being adequate to resolve the characteristic features of the pattem). The sub-pattem image so sensed is processed by the sub-pattem image processing unit 12 to extract data on the salient features of the pattem and derive the sub-pattem data characterisic of the sub-pattem in the locality of the stylus 11. The second approach is to sense a pattem area smaller than a sub-pattem, but containing a number of pattem features, and then to scan the sensing head 16 across the pattem 20 to sense a sufficient part of the adjacent portion of the pattem to be able to build up a full sub-patte . In this case, the process of building up a complete sub- pattem is facilitated by the fact that the direction of scanning of the sensing head 16 can be readily ascertained by examining successive sensed images so that features sensed at different times can be correctly inter-related. The process of pattern-feature extraction and the building up of a sub pattem (or, more generally, data representative of a sub-pattem), is effected by the sub-pattem image processing unit 12. The third approach to pattem sensing is to sense ony a single pattem feature at a time and then to scan the sensing head 16 across the pattem to permit the full sub-pattem to be built up in the sub-pattem image-processing unit 12 (this approach is termed "single pixel" sensing herein). In this case, the problem of correctly inter-relating successively scanned pattem features is more difficult as information on the direction of scanning is required. One solution to this problem is to make such information implicitly available from the sensed pattem, either in a homogenous manner or by the use of explicit movement-direction indicia (both approaches will be more fully explained below). An alternative solution is to provide external scan-direction sensing means providing an input to the unit 12; however, the extra cost involved in this solution makes it undesirable. Another solution is to assume that the sensing head 16 is being scanned in a straight line across the pattem so that successively sensed features can be readily inter-related. Sub-pattem data is then assembled by the unit 12 and passed to the position-determining means 13; as successive positions are determined it will readily become apparent when the assumption about straight line movement is incorrect and the corresponding false position readings can be discarded. Whatever sensing method is used, the sub-pattem image-processing unit 12 is operative to output sub-pattem data to the position-determining unit 13. This latter unit then determines the location of the sub-patte within the overall pattem 20 by reference to pattem data, representative of the pattem 20, held in a pattem data memory 17. The unit 13 may effect this location determination in a variety of different ways, for example, by pattem matching techniques, by use of an index accessed by the sub- pattem locations, or by calculation in cases where the pattem is an encoding of mathematically processible sequences or arrays. It will be appreciated from the foregoing that the pattem data held in memory 17, whilst representative of the pattem, need not be a direct representation but can be an indirect representation such as a series of index entries or a mathematical definition of the pattem. The pattem data need only represent the windowing pattem in a manner sufficient to permit absolute pattem position to be established from data characteristic of a sub-pattem. Having described the general arrangement and operation of the Figure 1 position- sensing apparatus, a more detailed consideration will now be given to the form, construction and sensing of rectangular windowing patterns. Rectangular Windowing Patterns As illustrated in Figure 2, the rectangular windowing patterns to be described hereinafter are based upon a rectangular arrangement of pattem features in correspondence with cells C disposed in rows and columns respectively parallel to pattem coordinate axes A p and B p . For ease of description hereinafter the axis is referred to as the horizontal axis and movement parallel to it as horizontal movement; similarly, the axis B p is referred to as the vertical axis and movement parallel to it as vertical movement. A cell at column coordinate "i" on the horizontal axis A p and row coordinate "j" on the vertical axis B p is designated j . Each cell is assigned one of a number of possible different values and these cell values constitute pattem features which are physically represented by indicia 15 appropriate for the sensing method to be employed. Thus, for example, the values assigned to the cells may be represented in the final pattem by respective colours. The cell values are used to encode an underlying two-dimensional windowing array or pair of windowing sequences that impart a windowing property to the pattem 20; in fact, sub-pattem position determination will generally be effected by recovering windowing sub-arrays or sub-sequences from the sensed sub-pattem. The nature of the encoding used will be more fully described hereinafter but for now it may be noted that two main forms of encoding are used, namely absolute encoding in which the cell value directly represents the value of the underlying array or sequence, and transitional encoding in which the change in value in moving between cells represents the value of underlying sequences. Depending on the encoding scheme used, certain other information may also be derivable from the cell value pattem, as will become clear below. An important issue in sensing a sub-pattem and deteπnining the position of the sub- pattem in the overall pattem (whether or not rectangular) is that of relative orientation of the sensed sub-patte to the pattem 20. This issue is considered below, with reference to Figures 3 and 4, in relation to rectangular patterns. Figure 3 shows a pattem 20 made up of a rectangular array of pattem features F (each illustrated feature F corresponds to a cell Cy of Figure 2, it not of course being necessary for the feature to occupy the whole cell area, though as will become clear below, this is generally desirable where for single-pixel sensing is employed). The pattem features mn in rows parallel to the vertical axis A p and in columns parallel to the vertical axis B p . If a sub-pattem of the Figure 3 pattem is composed of an arrangement of 3 by 3 features, then one of the many possible sub-pattems identifiable in the pattem is that constituted by features Fl to F9. This sub-pattem has three rows, composed of features (Fl, F2, F3), (F4, F5, F6) and (F7, F8, F9) respectively, that n parallel to a first coordinate axis A s of the sub-pattem, and three columns, composed of features (Fl, F4, F7), (F2, F5, F8) and (F3, F6, F9) respectively, that n parallel to a second coordinate axis B s of the sub-pattem. When the sub-pattem is considered in situ in the pattem 20 as shown in Figure 2, then the coordinate axes B P and B s are parallel; the sub-pattem is in its normal orientation relative to the pattem in which its combination of pattem features is unique within the pattem for the given pattem orientation. However, in the general case the sub-pattem sensed by the sensing head 16 will not have any particular orientation - it will just be a sub-pattem image. Of course, it will be possible to discern the rectangular nature of the sub-pattem. However, this will not permit a resolution to be made between the four possible orientations, at 90° intervals, in which the rectangular sub-pattem could equally lie. Figures 4A, 4B, 4C and 4D illustrate for the sub-pattem of Figure 3, these four possible orientations starting with 0° relative orientation between the axes A P and A, in Figure 4A and progressing at 90° intervals to a 270° relative orientation in Figure 4D. This ambiguity of orientation of the sensed sub-pattem can lead to incorrect location determination as the pattem may contain more than one instance of a sub-pattem if all orientations are considered. Windowing pattems for which a sub-patte can only be correctly located if the sub- pattem is considered in the same orientation as the pattem, are herein termed " 1- orientable" pattems. In fact, windowing pattems exist in which a sub-pattem can be correctly located in the pattem regardless of its relative orientation; such pattems are herein termed "4-orientable" pattems. Intermediate 1-orientable and 4-orientable pattems, there are pattems which can be correctly located in the pattem for two of the four possible relative orientations; these pattems are herein called "2-orientable" pattems. For the rectangular windowing pattems considered herein, whether a pattem is 1,2 or 4 - orientable depends on whether the underlying array/sequences represented by the pattem are themselves 1,2, or 4 - orientable. For a 4-orientable pattem, the potential problem of incorrectly locating a pattem due to an unknown orientation of the sub-pattem relative to the pattem, clearly does not exist. However, this problem does exist for 2-orientable and 1 -orientable pattems and in these cases, it is necessary to obtain sub-pattem orientation information to enable the sub-pattem to be appropriately oriented before its location is determined. One way of obtaining the required orientation information would be to provide a separate orientation sensor for sensing the orientation of the sensing heads about an axis perpendicular to the pattem 20; however, such an approach is costly. Another possibility would be to ensure that the sub-pattem is always sensed in a fixed orientation relative to the pattem by arranging for the sensing head to be non-rotatable about an axis perpendicular to die pattem 20; again, this approach is not preferred due to the practical limitations of such an arrangement. The preferred approach to orientation sensing is to encode orientation information into the pattem either as part of the basic array/sequence encoding or by providing special orientation indicia integrated into the pattem 20 and sensible by the sensing head 16. This orientation information is then sensed by the unit 12 and used to derive sub-pattem data that represents the sub-pattem in an orientation in which it can be uniquely located in the pattem by the unit 13. Windowing Arrays and Sequences Having considered the general form of rectangular windowing pattems, suitable windowing arrays and sequences upon which such pattems can be based, will now be discussed. Although the arrays and sequences discussed below are all binary (that is, the constituent elements of the arrays and sequences can only be one of two possible values), this is merely preferred for ease of implementation and ternary and higher order arrays and sequences can also be used as d e basis for windowing pattems. Two Dimensional Arrays - Two dimensional arrays of elements can be constructed which have a windowing property in relation to sub-arrays of given extent. Thus, a 1 -orientable array (from which a 1 -orientable pattem can be constructed) can be formed by writing a PRBS diagonally within a two-dimensional array structure. Such arrays are disclosed in the article by MacWilliams and Sloane referred to above and, as noted in that article, these arrays exhibit a windowing property. Another type of binary array that can be used to constmct 1-orientable, 2-orientable or 4-orientable pattems is disclosed in Appendix A. This type of array is constructed from first and second binary sequences of length m and n respectively, where "m" and "n" are integers, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to 2 n + ', by considering the value of the (i-l)th element of the second sequence, and if the (i-l)th element has a first binary value, forming die said (i)th column from said first sequence unshifted relative to die (i-l)th column, if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column. Where the binary sequences are PRBS's, tiien die resultant arrays will be 1-orientable; where one or both binary sequences are reversible orientable binary sequences (see below), the resultant array will be 2 or 4-orientable. Orthogonal Sequences - By using two binary sequences, each possessing the windowing property, it is possible to constmct rectangular windowing pattems. Generally, one sequemce is used to determine pattem changes when moving parallel to one pattem axis, whilst other sequence controls pattem changes when moving parallel to die other pattem axis. As a result, positioning along each pattem axis can be determined by reference to corresponding sequence. Such pattems may be 1 -orientable, or 2- orientable (but generally not 4-orientable as it is necessary to distinguish between the two sequences before effecting position determination). For a pattem to be 2- orientable both binary sequences must not only be windowing but at least after encoding, must not give rise to the same windowing sub-sequence when read in both directions. Four types of usable sequences can be identified: Type 1 - deBruijn sequeunces; Type 2 - Pseudo-random sequences; Type 3 - Orientable sequences (that is, sequences for which each window sub-sequence of length m occurs only once, and its reverse does not); Type 4 - Complement-orientable sequences (that is, sequences for which each window sub-sequence of length m occurs only once and its complement reversed does not). All four types are windowing, the first two types producing 1 -orientable pattems and the second two types, 2-orientable pattems. The suitability of each type of sequence depends on die encoding employed and the sensing method used. The first two types of sequences have been well-studied in die literature whilst the second two types do not seem to have received attention before. It is of course relatively straightforward to perform computer searches to find orientable and complement-orientable binary sequences, but it is very time-consuming for even moderate window lengtiis; it would be useful, therefore to be able to construct these sequences algorithmically and Appendix B considers how this may be done. Pattem Construction - General Considerations Precisely what information needs to be recoverably contained in the pattem 20 to enable sub-pattem sensing and position determination depends on the nature of the underlying array/sequences, the encoding metiiod used, and on the sensing method employed. However, in general terms information is required as to: array/sequence element value cell delineation cell inter-relationship in forming a pattem pattem orientation As depicted in Figure 5, information on these items can be provided in ti ree basic ways, namely inherently in the cell values that encode the underlying array/sequence (see line 200); as explicit auxiliary pattem features combined with the encoding represented by die cell values (see line 201), and independentiy of the pattem (see line 202). The interrupted dashed connections between the information items of pattem orientation, cell inter-relationship and cell delineation on d e one hand and the three methods 200, 201, 202 of providing this information on the other, is intended to indicate the variety of combinations possible. Each of the above-listed information items is discussed below. For convenience, hereinafter the value of each cell will be taken to be represented in the pattem 20 as a colour unique to each possible value, it being appreciated tiiat the teaching given below generally applies to any other form of physical presentation of cell value. Array/Sequence Value Encoding - There are two main encoding techniques, one being to allot each cell C y a colour representing the absolute value of a corresponding element of the array to be encoded, and the other being to encode a sequence element value as a change in colour between two cells when moving in a direction aligned with the pattem axis associated with the sequence. A more detailed consideration of transitional encoding is given further on. Cell Delineation - It is important to be able to detect transition from one cell to another, tiiat is, to be able to detect cell boundaries. Cell boundary information can be encoded with cell values (method 200 of Figure 5) by use of an encoding scheme which ensures that neighbouring cells do not have the same colour (even if, in die case of absolute value encoding, the same element value of the underlying array or sequence is being encoded). In the simplest case, each cell can be considered as having four neighbours, two horizontally and two vertically (diagonal transitions being either prevented or otherwise detected, or the apparatus being designed to tolerate errors that may result from such transitions). Figure 6 illustrates the absolute- value encoding of a binary arrays using four colours, two each to represent each binary value "1" and "0". If transitions to diagonal neighbours are also be be reliably detected, then the encoding scheme must additionally ensure that these diagonal neighbours will always be differently coloured to the cell under consideration. Cell boundary information can also be encoded by providing auxiliary pattem features (method 201 of Figure 5) and, in particular, by providing separator zones between the value-defining area of each cell. Figure 7 illustrates the absolute-value encoding of the same binary array as encoded in Figure 6 using tiiree colours - a first, background colour represented by blank spaces in the Figure, a second colour corresponding to a first binary value (for example "0") and represented by hatching in a first direction in Figure 7, and a tiiird colour corresponding to the second binary value (for example " 1 ") and represented by hatching in a second direction in Figure 7. The value of each cell C y is represented by a square 21 of d e corresponding second or third colour, this square of colour (an indicia) being smaller than the pattem cell size and being centrally positioned in its cell to leave a border all around, in the first colour, tiiat provides separator zones between the colour squares 21 so tiiat neighbouring squares can be the same colour without causing problems. With d e relative dimensioning of separator zones and colour squares shown in Figure 7, tiiere is some risk that a single-pixel sensing head 16 could travel at least part way across the pattem along the background and therefore fail to detect correctly the value-representing colour squares 21. However, provided the separator zones are kept relatively narrow, the chances of this happening to a significant extent are small. With the Figure 6 pattem there is, of course, no risk of the sensing head missing the value representing cell areas. Cell boundary information can also be provided by a combination of encoding witii cell value (as in Figure 6) and the use of separator zones (as in Figure 7). For example, transitions in die horizontal direction could be rendered detectable by ensuring a change in cell colour whilst transitions could be marked by separator zones. The use of pattern-independent means to delimit cell boundaries is also possible, for example, by providing means that register movement of the sensing head 16 by vertical and horizontal distances corresponding to the vertical and horizontal pitch of die cells. Such arrangements are not preferred. Cell Inter-Relationship Information - It is, of course, necessary to be able to positionally relate a sensed cell to previously sensed cells in order to ascertain the relative locations of array/ sequence elements decoded from the sensed pattem tiiereby to accurately construct a windowing sub-array or sub-sequences. Where the, sensing head 16 senses more tiian one cell at a time, the inter-relationship of the sensed cells can be readily derived from die sensed image, the cell inter-relationship information being directly conveyed. However, where a single-pixel sensing head is used, d e cell inter-relationship information must be conveyed by one (or more) of the three general methods 200, 201, 202 of Figure 5, or else an assumption must be made regarding sensing head movement (for example, that it is moving in a straight line) and the resultant decoded array/ sequence then checked for consistency with this assumption. In fact, for single-pixel sensing an acceptable solution may lie in providing some inter- relationship information and also making some assumptions as to direction of movement. Encoding of full cell inter-relationship information along witii cell value information (metiiod 200) requires that each neighbour cell of any given cell all present different colours from tiiat cell and the other neighbours cells, regardless of die underlying element values being encoded. Even if only horizontal and vertical transitions are considered (and not diagonal transitions), a mimimum of nine colours are required; when diagonal transitions are taken into account, at least seventeen colours are needed which is not preferred due to the demands placed on the sensing head 16 and associated colour detection circuitry. Cell inter-relationship information can be incorporated in auxiliary pattem elements (metiiod 201 of Figure 5), a preferred way of doing this being to colour code separator zones provided to delineate cell boundaries. Thus, Figure 8 illustrates part of a pattem in which the value of each cell is represented by an appropriate coloured square 21 and separator zones 23 and 24 are used to delimit each cell. The separator zones 23 delimit each cell in a vertical direction and die separator zones 24 delimit each cell in a horizonal direction. The zones 23 are of a different colour to the zones 24 and both zone colours are different from die colours used for the colour squares 21. Such an arrangement gives horizontal and vertical relationship information during transition from one cell to another but does not indicate whether the new cell lies above/below (for vertical movement) or to die right/left (for horizontal movement). For the Figure 8 pattem, it is therefore necessary to make an assumption in respect of tiiis direction information. Figure 9 shows a pattem similar to Figure 8 but for which it is unnecessary to make any assumptions as to direction. In Figure 11, colour squares 21 are again used to encode array/sequence element values although in this case, d e colouring of the square 21 is not shown for ease of illustration. The colour squares 21 are separated from each otiier by separate zones 25 each coloured in one of four possible separator zone colours distinct from die colours used for the squares 21. The separator zones separating adjacent squares 21 in rows running parallel to the horizontal axis A p are alternatively coloured in two of the four possible separator zone colours whilst the zones 25 separately adjacent square 21 in columns running parallel to the vertical axis B p are alternatively coloured in the other two of the four possible separator zone colours. Whenever a single pixel sensing head 16 transits from one colour square 21 to another, it will cross a zone 25 die colour of which uniquely indicates die direction of movement of the sensing head 16. Furthermore, since diagonal transitions will generally involve crossing the ends of two separator zones, one of each type, the inter-relationship of starting and finishing cells in a diagonal transition can also be determined. The provision of cell inter-relationship information by means independent of the pattem itself (method 202 of Figure 5) is, of course, feasible (for example by sensing direction of movement of the sensing head 16 over the pattem) but will generally not be preferred. Pattem Orientation Information - Depending on the orientation characteristics of the underlying array/ sequences, differing amounts of orientation information need to be provided. Thus, for pattems based on 4-orientable arrays, no orientation information is needed whilst for pattems constructed from orientable or complement-orientable sequences, it is generally only necessary to identify which sequence runs in the horizontal direction and which runs in the vertical direction. As with the otiier types of information, pattem orientation information can be made available in accordance with any one (or more) of the methods 200, 201, 202 of Figure 5. However, it may be noted that orientation information is closely related to cell inter-relation information and can generally be provided jointiy witii d e latter. For example, for the Figure 8 pattem d e separator zones 23, 24 already identify vertical and horizontal transitions respectively, and this is all die orientation information required for 2-orientable pattem (in fact, the separator zones 23, 24 need only have identified different transition directions to give die desired cell inter-relationship information - the association of separator zones 23 with vertical transitions and zones 24 with horizontal transitions actually provides the additional orientation information). Where cell inter-relationship information is not specifically provided (for example, because it is apparent upon inspection as witii a sensing head 16 that senses more man one cell at a time), then of course d e orientation information cannot be incorporated with the cell inter-relationship information and specific means must be used to carry the orientation information. Figure 10 illustrates one such way of providing orientation T. information (by metiiod 201 of Figure 5). More particularly, Figure 10A illustrates how a colour square 21 such as is used in Figure 7,8 and 9 to encode array/sequence element value information, can be marked in its co er directed towards the origin of axes A p and B p , with an orientation indicia 22 of a different colour to the colours used for the colour square 21. If all the colour squares of a pattem were marked in this way, then upon a sub-pattem being sensed, it is a relatively easy matter to determine die orientation of the sub-patte . Thus, for example, d e sub-pattem shown in Figure 10B (which corresponds to the first three rows and columns of the Figure 7 pattem with orientation indicia added) can be seen to be rotated through 270° relative to the pattem orientation of Figure 10A. Orientation indicia 22 of die Figure 10 form are, of course, only applicable to cases where the sensing head 16 provides sufficient resolution to discern d e relationship between at least one such indicia and its associated colour square 21. Example Encodings Having discussed the types of information, requiring to be provided for pattem recovery and given examples of how each information type might be encoded, several complete encoding schemes are next considered for recoverably encoding both arrays and sequences. All the encoding schemes considered below encode d e required information within the pattem 20 (that is, by use of methods 200, 201 of Figure 5); provision of information independently of the pattem 20 is generally not preferred as is would require a supplementary sensing system. Encoding of Arrays - Two dimensional arrays are preferably encoded by absolute value encoding of tiieir element values. For example, for a 2-orientable array, an encoding scheme such as used for die Figure 8 pattem is suitable. In the Figure 8 pattem, array element values are encoded by an appropriate one of two colours for the colour squares 21; cell delineation is provided by the separator zones 23,24; cell inter-relationship information (vertical, horizontal and diagonal relationships) for single-pixel sensing is provided by differently colouring the zones 23 and 24; and orientation information is provided by knowing which zone colour is associated with vertical transitions and which with horizontal transitions. Encoding of Sequences using Absolute- Value Encoding - For pattems based on pairs of orthogonal sequences, one extending horizontally and the otiier vertically, die sequences must first be combined into a two-dimensional array for absolute-value encoding to be readily applicable. Figure 11 illustrates two possible ways of deriving a suitable array from two orthogonal sequences (in the illustrated examples, the sequences are two PRBSs referred to as PRBS-1 and PRBS-2). In Figure 11 A, PRBS-1 has been written out parallel to the horizontal axis A p and PRBS-2 has been written out parallel to the vertical axis B p . Within each cell C j has been written the ordered pair of element values from PRBS-1 and PRBS-2, corresponding to that cell. There are four possible such ordered pairs, these being (0,0), (0, 1), (1,0) and (1,1). By assigning a value to each different ordered pair, it is possible to assign one of four possible values to each cell. It is this cell value that is subsequently translated into a corresponding pattem feature. In Figure 11B the two PRBS's have again been written out along d e axes A p and B p respectively. However, this time the elements of PRBS-2 have been written at a spacing of two rows between adjacent elements, starting at the second row. Each odd numbered row of the cell array (die first row being numbered row one) is filled with a copy of PRBS-1. Each even row is filled with the corresponding element value from PRBS-2. The value of each cell is thus either one or zero as each cell is only associated with an element from one of the two PRBSs. Figure 12 illustrates a pattem produced by an absolute value encoding of an array formed by combining two orientable (reversible) binary sequences in the manner illustrated in Figure 1 IA (it will be appreciated that die array and resultant pattem are 2-orientable). The pattem cells can take on four possible values and accordingly four colours are used for encoding array element values. Cell boundary information, cell inter-relationship information and pattem orientation information are all provided by white and black separator zones 26, 27 in die same manner as the zone 23, 24 of the Figure 8 pattem (as the pattem is 2-orientable, it is only necessary to be able to distinguish between horizontal and vertical orientations). In all, six colours are used in die Figure 12 pattem. With regard to cell inter-relationship information, although it is possible to distinguish between horizontal, vertical and diagonal transitions, with a single-pixel sensing head 16 it is not possible to ascertain the direction of a detected transition. However, it is practical to proceed on die basis tiiat the direction of movement of the sensing head remains unchanged; this assumption will only be incorrect in the case of direction reversal and such an event can be quickly detected due to die resultant mismatches with the expected pattem. Where a sensing head with a multi-cell field of view is used, tiien all necessary movement direction information can be derived from the sensed image. Figure 13, like Figure 12 illustrates a pattem produced by an absolute value encoding of an array based on two orientable (reversible) binary sequences; however, in this case the sequences have been combined into an array in the manner illustrated in Figure 11B whereby each cell has only two possible values (in fact, Figure 13 is an encoding of die sequences shown in Figure 11B). In the Figure 13 example, the cell boundary issue is tackled by the use of colours squares 21 on a differently coloured background (reference Figure 7); as a result, only two colours are needed to represent cell value, one for each possible binary value. The background is represented by two further colours with the cells in odd pattem rows having a first background colour 28 and cells in even pattem rows having a second background colour 29. As a result, the colour squares 21 appear against a stiiped background tiiat provides botii some limited cell inter-relationship informtion, as well as orientation information sufficient to indicate which row relates to which of the two underlying reversible sequences. In the Figure 1 IB arrangement for combining the A p -axis sequence and the B p -axis sequence into an array, each altemate row contains cells representing the same element of the B p -axis sequence; similarly, each altemate row of the Figure 13 pattem contains colour squares 21 representing the same element of the B p -axis sequence. As a result, it is possible to modify the Figure 13 pattem by running togedier die colour squares 21 in the same B p -axis sequence row. Indeed, at die cost of using one extra colour, each row being used to represent an element value of die B p -axis sequence, can do so by being fully coloured witii one of two unique colours depending on the binary value of the value of the element being represented (these colours would be different to die ones used to represent the elements values for the A p -axis sequence). Colour squares 21 would tiien no longer be used to represent the B p -axis seqeunce. Furthermore, the colour squares 21 used to represent d e A p -axis sequence can now be extended parallel to the B p -axis to the edge of die adjacent rows because these rows can be guaranteed to be of a different colour to d e A p -axis sequence squares 21; the background zones separating the A p -axis sequence squares 21 in the direction parallel to the axis A p would, however, be retained to ensure discrimination between adjacent cells. Thus, in this modified form of the Figure 13 pattem, the cell boundary detection issue is dealt with by die Figure 6 technique when moving along A p -axis sequence rows and by the Figure 7 technique when moving between rows. Encoding of Sequences using Transitional Encoding - W ere a pattem 20 is directly based on two underlying orthogonal windowing sequences, one (herein the horizontal sequence) for position determination along die horizontal pattem axis A p and die other (the vertical sequence) for position determination along the vertical pattem axis B p , then it is convenient to use a transitional encoding scheme to encode sequence values. More particularly, changes in cell value during horizontal cell-to-cell transitions in the pattem are used to encode element values of the horizontal sequence, whilst changes in cell value during vertical cell-to-cell transitions are used to encode element values of the vertical sequence. As transitional encoding schemes appear of practical significance, a general review of such schemes is given below after which three example encodings are considered. The review covers both schemes with and without separator zones; where separator zones (or, for brevity, just "separators") are provided, then any colour coding of die separators to convey cell inter-relationship or pattem orientation information is done on an absolute value basis, not a transitional basis. Schemes that do not employ separators are referred to as 'no separator' schemes. Schemes in which only horizontal, or only vertical, transitions are marked by separators are referred to as 'one separator' schemes. Schemes in which both horizontal and vertical transitions are marked by respectively coloured separators, are referred to as 'two separator' schemes (schemes in which a single colour of separator is used to mark botii vertical and horizontal transitions are not considered). In die following discussion, a first binary windowing sequence (the X-sequence) is to be encoded running parallel to die horizontal pattem axis A p and a second binary windowing sequence the (Y-sequence) it to be encoded running parallel to the vertical pattem axis B p . Suppose that the transitions in the horizontal direction (positive direction of axis A p ) are given by the functions ho and h and in die vertical direction (positive direction of axis B p by functions v 0 and v t where the suffixes "0" and "1" refer to the value of the X or Y sequence element to be encoded. This means tiiat if the current cell is coloured with colour c, then the next cell in a horizontal direction is coloured with colour ho(c) or hj(c) according to the value of the corresponding sequence element. The conditions on these functions are that the resultant pattem must encode element value information, must delineate the pattem cells (by colour change between neighbouring cells if no separator is present), and must permit adequate cell inter-relationship and pattem orientation information to be recovered; with regard to die cell inter-relationship and pattem orientation information, me minimum amount of information that must be recoverable shall be taken to be that enabling horizontal and vertical movements to be distinguished and identified. A further condition is that the encoding must be well defined (tiiat is, whatever path is taken across the pattem, application of the encoding functions produce a consistent coding for any given destination cell). These conditions alone lead to some conclusions about the minimum number of colours necessary for certain types of encoding scheme. Thus, for the coding to be well defined: hj(V j (c)) = V j (hi(c)) for all colours x and i,j € {0, 1}, for otherwise there would be a conflict when determining the colour of the cell diagonally adjacent to a cell coloured c. Furthermore, for decoding to be possible, it must be possible to distinguish between h 0 (c) and h^c) and between v 0 (c) and v^c); In other words: h 0 (c) ≠ h,(c) for all colours c and v 0 (c) ≠ V ι (c) for all colours c. If there are no separators, there must be no adjacent cells coloured with the same colour (here "adjacent" is taken as vertically or horizontally adjacent, not diagonally) and horizontal movement must be distinguishable from vertical movement by cell colour so that: c,h 0 (c),h 1 (c),v 0 (c),v i (c) must all be different for each colour c. If there is just one set of separators then: c,h 0 (c),h j (c) must all be different for each colour c; or c,v 0 (c),v,(c) must all be different for each colour c. Where two sets of separators are provided, adjacent cells can, of course, be the same colour. On the basis of the foregoing: If there are no separators, then at least 5 colours are needed. - If diere is just one set of separators, then at least 4 colours are needed. If there are two sets of separators, then at least 4 colours are needed. The above discussion only considered horizontal and vertical transitions. Where diagonal transitions are allowed, when such a move is made, there are two bits of information to be determined one for each of d e sequences X-sequence, Y-sequence, and referred to below as the X-bit and the Y-bit respectively. There are several levels of information possible depending on the encoding scheme used. Thus, it might only be possible to tell that a diagonal move has been made, or it might also be possible to tell that the X-bit and Y-bit are equal (or unequal), or even what d e values of both the X-bit and Y-bit are; another possibility is that it is possible to ascertain either the information that the X-bit and Y-bit are equal, or the value of both bits. In terms of die functions h, and V j the colours in the following set may occur a diagonal move away from a cell coloured c: {( c))MV.(c))M c))MV.(c))} . Note that this set has at least two elements, because hoCv c))) ≠ hj(V j (c)) and hi(v 0 (c)) ≠ h;(v,(c)). The size of this set determines me amount of information that can be obtained once it is known that a diagonal move has taken place. An encoding scheme will be said to be r-diagonal (where r = 2,3,4) if the size of this set if equal to r). the problem of detecting diagonal moves is different depending on die number of separators. If there are two sets of separators, then diagonal moves are automatically detected by the separators. At the other extreme, if there are no separators, then the diagonal values must not be die same as any horizontal or vertical ones: in other words, the following condition must be satisfied for each where c: n {h 0 (v 0 (c)),h d (v 1 (c)),h 1 (v 0 (c)),h 1 (v 1 (c))} = 0 If there is one set of separators, say separating cells in a vertical direction, then crossing a separator indicates either a vertical or a diagonal move has occurred. For one separator scheme, therefore, the following condition must be satisfied for each colour c: {v 0 (c),v,(c)} n {h 0 (v 0 (c)),ho(v 1 (c)),h 1 (v 0 (c)),h,(v 1 (c))} = 0 The above-stated additional conditions resulting from a consideration of diagonal transitions means that: - If there are no separators, then the following numbers of colours are required: 8 for a 2-diagonal encoding; 8 for a 3-diagonal encoding; and 9 for a 4-diagonal encoding. If there is just one set of separators, then the following numbers of colours are required: 5 for a 2-diagonal encoding; 6 for a 3-diagonal encoding; and 7 for a 4-diagonal encoding. - If there are two sets of separators, then the following numbers of colours are required: 4 for a 2-diagonal encoding; 5 for a 3-diagonal encoding; and 6 for a 4-diagonal encoding. Where diagonal transitions are permitted, schemes providing 4-diagonal properties are preferred as they facilitate recovery of X-bit and Y-bit information. The foregoing conditions placed on the encoding functions do not guarantee that full cell inter-relationship or pattem orientation information will be recoverable. Whilst it is usually adequate to make the assumption tiiat the direction of movement remains unchanged until an inconsistency is detected, this still leaves a deficiency of orientation information for 1-orientable sequences (deBruijn sequences and PRBSs). Furthermore, for both orientable and complement-orientable sequences, further conditions must be placed on the encoding functions in order to present d e 2-orientable property. These further requirements of the four types of sequences are considered below: Considering for example die horizontal dimension in which the X-sequence is encoded, then the only possible transitions from a given cell of colour c are ho(c), h,(c), h 0 'I (c),h 1 '1 (c) where the superscript "-1" indicates a reverse transition. The further conditions to be placed on die encoding function are then: de Bruijn sequences - in order to give full orientation information are all different PRBS - in order to give full orientation information: (in this case, any window sequence will contain a " 1 " and the encoding of this " 1 " gives direction information on reading) Orientable Sequences in order to present the 2-orien table property: Complement Orientable in order to present the 2-orientable property: It may be noted that the above conditions placed on the encoding of the de Bruijn sequences does provide full cell inter-relationship and pattem orientation information so that no assumptions are needed regarding the movement direction; schemes satisfying the stated conditions do, however, require a substantial number of colours. Having considered the conditions generally required to be fulfilled by the encoding function, two types of such functions are described followed by examples. More particularly, the following two types of functions have been found of use: "Addition modulo N": ho(c)=c+a (mod N),h-(c)=c-a (mod N), v 0 (c)=c+b (mod N),Vj(c)=c-b (mod N), where a,b ≠ 0 "Bitwise Exclusive-OR": ho(c) = c.XOR.a ; h,(c) c.XOR.b v 0 (c) = c.XOR.d ; v,(c) c.XOR.e where a,b,d,e ≠ 0, a ≠ b and d ≠ e First Example Fig 14. No separators, Five colour encoding h 0 (c)=c+l (mod 5) ; hι(c)=c-l (mod 5), v 0 (c)=c+2 (mod 5) ; v,(c)=c-2 (mod 5) No diagonal properties Suitable for compliment-orientable sequences This encoding scheme produces the simplest pattem in the sense that it uses only five colours and has no separators. However, because it has no diagonal properties, the scheme is only suitable for situations where diagonal transitions do not occur or occur ony infrequently. Figure 14A gives the encoding table for the scheme, each horizontal row giving the result of applying each of the encoding functions to one particular colour (the five possible colours are referenced Cl to C5). Figure 14B illustrates a portion of a pattem generated by applying the encoding scheme to encode the X- and Y-sequence sections shown in that Figure. Figure 14C is a decoding table which given the old and new cell colours, decodes a transition into an X-bit or Y-bit, d e bit values shown in the table being followed by X or Y to indicate the sequences to which they belong. Second Example Fig 15. Two separators, six colour encoding ho(c) = c ; h-(c) = c.XOR.l v 0 (c) = c ; v,(c) = c.XOR.2 Four diagonal properties Suitable for orientable sequences This encoding scheme realises the minimum number of colours for a 4-diagonal coding and when used to encode two orientable sequences, produces a pattem of significant practical utility (even though full cell inter-relationship is not provided, requiring the assumption to be made that the direction of movement remains constant until otherwise proven). Of the six colours, two are used for the separators (one for the separators crossed when moving vertically and the other for separators crossed when moving horizontally); the remaining four colours are used to carry sequence element value information. Figure 15A shows an encoding table for the scheme, the four colours, used for carrying the element value information being referenced C1,C2,C3,C4 witii respective binary values of 00,01,10,11. Figure 15B represents a pattem portion derived from using the encoding scheme to encode the portions of me X-and Y- sequences shown in that Figure (it will be appreciated what in Figure 15B the separators have not been depicted - the actual form of the pattem being similar to at shown in Figure 12 with the colours Cl to C4 being the colours of die colour squares 21). Figure 15C shows a decoding table for deriving X- and Y- bit values from colour transitions read from a pattem encoded according to the scheme. The decoding table is divided into three sections "Horizontal", "Vertical" and "Diagonal", the section relevant to a particular transition being dependent on the direction of movement of the sensing head as determined by the colour of the separator (or separators) crossed in die course of the transition. A diagonal transition does of course produce both an X-bit and a Y-bit value whilst horizontal and vertical transactions only produce an X-bit and Y-bit respectively. Third Example Fig 16. No separators, 8 colour encoding ho(c) = c.XOR.4 ; h,(c) = c.XOR.2 v 0 (c) = c.XOR. l ; v,(c) = c.XOR.7 Two diagonal properties Suitable for orientable sequences In this encoding scheme, eight colours Cl to C8 are used witii respective binary vlaues of (000) to (111). Figure 16A shows an encoding table for the scheme. Figure 16B represents a portion of a pattem encoded according to the scheme, and Figure 16C shows a partial decoding table (unfilled boxes in the table indicate diagonal transitions, but as the encoding scheme has only two diagonal properties, X-bit and Y-bit values are not immediately derivable). Further Examples Almough d e use of sequences that are neither orientable nor complement-orientable, is not preferred, for completeness suitable encoding functions for de B ijn sequences and PRBSs are: de Bmijn: h o (c)=c+ l (mod 5), h^c^c+2 (mod 5), PRBS v 0 (c) = c (mod 3), v,(c) =c+ l (mod 3). These functions only apply, of course, to one dimension and merely serve to illustrate the availability of functions satisfying the conditions previously given for obtaining full cell inter-relationship information for a particular sequence. Pattem Sensing and Position Determination The general functioning of the sensor 11, sub-pattem image processing unit 12 and position determining unit 13 have already been described. For the pattems described above, d e sub-pattem data passed from me sub-pattem image processing unit 12 to the position-determining unit 13, will generally be in the form of binary data representing the sub-array/sub-sequences underlying the sensed sub-pattem in an orientation in which the location of the sub-array/sub-sequences can be uniquely determined within the pattem. As indicated above, position determination can be effected by a matching process, by use of an index relating sub-pattem data to pattem position or by calculation. Position determination by calculation provides a good compromise between speed and cost, especially for large arrays and sequences. Where the windowing pattem is based on a combination of two PRBSs, then the location of each window-lengtii subsequence sensed can be determined witi in its respective PRBS by using a computing machine to implement the method disclosed in Appendix C. Where the windowing pattem is based on a pseudo-random array, then position determination can be carried out by using a computing machine to implement the metiiod disclosed in Appendix D. As previously noted, following initial determination of the location of the stylus 11 , the position determination unit 13 can be arranged to change its mode of operation to one in which any change in the pattem sensed by d e stylus is used to provide an updated location based on the incremental change in location indicated by die change in sensed pattem. Operation in this mode depends on the apparatus being able to assess correctly the direction of movement of the stylus; altematively, the apparatus may operate by assuming an unchanging direction of movement until a mismatch between a sensed pattern element and that predicted by the stored pattem indicates otherwise, the apparatus thereafter effecting a position recovery operation. In order to avoid an error in the detection of an incremental change giving rise to a progressively increasing position error as subsequent position changes are accumulated, an absolute position determination may be effected at appropriate intervals. Of course, whenever d e stylus 11 is lifted off the pattem and replaced in a different position, an absolute position determination should be effected. Stylus lift-off can be readily detected by an appropriate sensor or simply by recognizing a loss of pattem image by the sensing head 16. Example Implementation A more detailed description will now be given, with reference to Figures 17 to 30, of a processor-based embodiment of the position-sensing apparatus which employs a single-pixel sensing head 16 to detect pattem features of a two separator six-colour pattem 20 that encodes two orientable binary sequences, and which utilizes incremental position updating following initial absolute-position determination. Witii certain differences (to be described) in the low-level processing effected by die Figure 17 apparams, the apparatus can be used both with a pattem of the Figure 12 form in which sequence values are encoded in absolute terms, and with a pattem of the Figure 15 form in which sequence values are encoded by transitions. In the following description of the Figure 17 apparatus, the two orientable binary sequences encoded in the pattem will be referred to as the X-sequence (providing position information in the horizontal co-ordination direction Ap) and the Y-sequence (providing position information in the vertical co-ordinate direction B p ). The Figure 17 apparatus comprises a pattern 20 (of the Figure 12 or 15 form) a single- pixel sensing head 16, low-level hardware 50 for generating outputs indicative of the values of successively traversed X and Y bits, and a processor sub-system 51 for effecting high level processing of the outputs of the low level hardware 50 to track the movement of the sensor head 16 over d e pattem 20. The low-level hardware 50 is illustrated in functional block diagram form in Figure 18 and comprises opto-electronics block 80 operative to provide an output indicative of the colour sensed by the sensor head 16, a colour interpreter 311 outputting a four-bit code on bus 81 indicative of X and Y bit values and the presence of separating zones, a control state machine 82 controlling operation of the low-level hardware 50, a latch 85 for holding the X and Y bit values of a colour square 21 sensed by die head 16, a zone memory 84 for storing data on separating zones 26, 27 previously traversed by the head 16, an interrupt generator 83 for generating interrupts to cause the high level processor sub-system 51 to indicate to the low-level hardware 50 when it has finished servicing the last interrupt generated by the interrupt generator 83. The opto-electronics block 80 is shown in greater detail in Figure 19. Both the Figure 12 and Figure 15 pattems use six colours (here referred to as Cl to C6) with four of tiiese colours Cl to C4 being used for the colour squares 21 tiiat represent X,Y value pairs, and two of the colours C5, C6 for the separating zones 26, 27 (separators) separating the squares. In this embodiment, die six different colours Cl to C6 to be detected in the pattem 20 are composed from three different mono-chromatic colour of wavelengths x^ , x 2 and X3 respectively (it will be appreciated tiiat these wavelengths will generally be in the visible or near-visible spectrum, including infra-red). More particularly, three of the pattem colours correspond to respective individual ones of the monochromatic colours whilst the other three pattem colours correspond to a respective monochromatic colour pairing that is (x j , x 2 ), ( j , X3) and (x 2 , X3). Where a pattem element is represented in a particular colour, men this element is effective to reflect light incident on the element that is of a wavelength corresponding to die or each monochromatic component colour of the pattem colour concerned. To determine the colour of a pattem element, therefore simply requires the element to be illuminated by all three monochromatic colours and the reflected radiation analysed to determine which monochromatic colour or pair of colours has been substantially reflected from the pattem element. Thus, in Figure 19 three monochromatic light sources T j , T 2 , and T 3 powered by driver electronics 300 are arranged to launch optical signals of respective wavelengths j , x- > and X3 into respective optical fibres 301, 302 and 303 for the purpose of illuminating the pattem 20. The fibress 301, 302 and 303 together with reflected- radiation fibres 304, 305 and 306 are formed into a flexible bundle 307 that extends from the stationary opto-electronics block 80 to the probe 11. The fibres terminate juxtaposed a focusing lens and jointly constitute therewith the sensing head 16. The fibres may be spliced together. The fibres 304, 305 and 306 pick up radiation reflected from the pattem and pass this radiation via respective filters F j , F 2 and F to respective photo-diodes 308 where the filtered radiation is detected. Figure 20 shows die transmissivity of the filters F j , F 2 and F3 as a function of wavelength together with the envelope of the radiation transmitted by me light sources T l 5 T 2 and T3. As can be seen, filter F j passes light from the source T, filter F 2 passes light from the source T 2 and filter F 3 passes light from the source T3. The photo-diode signals are amplified and level detected in signal conditioning circuiting 309 to produce three monochromatic colour output signals indicative of die presence or absence of wavelength components γ, x 2 and x 3 in the reflected radiation. These output signals are passed to colour determining circuitry 310 which serves to translate the colour components into the corresponding one of the six colours Cl to C6 of the pattem 20 and to energize an appropriate one of six outputs of the circuitry 310; these outputs form the outputs of the opto-electronics circuitry 80 with the output representing the currently - sensed colour being at a logical " 1" level and " d e other outputs being at a logical "0" level. It will be appreciated that the opto-electronics 80 can be arranged in a variety of different ways to that described with reference to Figures 19 and 20. Thus, for example, me monochromatic light sources T 1} T 2 and T 3 could be pulsed to enable greater instantaneous power levels to be achieved and/ or modulated and synchronously detected to improve noise immunity. Again, the tiiree separate monochromatic sources T,, T 2 and T 3 could be replaced by a broadband light source (a "white light" source). In this case, it would also be possible to represent d e six pattem colours by respective, single wavelengths with the pattem colour then being detected directly by an arrangement of six filters and photo-detectors (care would, of course, need to be taken to ensure sufficient discrimination between adjacent colours). Furthermore, the light sources and detectors could all be packaged into the probe 11 and an appropriate cordless link (for example, a radio link) provided to pass detection signals to the remainder of the low-level hardware 50. Returning now to a consideration of Figure 18, the six colour outputs of the opto- electronic are fed to die colour interpreter 311 where a four-bit code is produced on line. Each bit BO to B3 of the four-bit code output on line 81 has a particular significance. More particularly: BO - indicates whether the head 16 is over a colour square 21 (in which case BO = '0') or a separating zone 26, 27 (in which case BO = T); Bl - indicates the identity of the separating zone sensed by the head 16, having a value '0' when a zone 26 (traversed by the movement along the X-sequence) is encountered, and a value T when a zone 27 (traversed by movement along me Y-sequence) is encountered - it will be appreciated that the value of Bl is only valid when BO = ' 1 ' ; B2 - indicates die X-sequence bit value '0' or ' 1' represented by a colour square 21, or transition to that square, as sensed by the head 16 - d e value of B2 is only valid when B0 = '0'; and B3 - indicates the Y-sequence bit value ('0' or '1') represented by a colour square, or transition to that square, as sensed by die head 16 - the value of B3 is only valid when B0 = '0'. The form of the colour interpreter 311 depends on whether the pattem 20 is of the Figure 12 or Figure 15 form. Where the pattem is of the Figure 12 form in which the colours Cl to C4 each directly encode one X-bit and one Y-bit, the colour interpreter can take the form of a simple decoding matrix translating each colour Cl to C6 into a corresponding set of values for bits B0 to B3 in accordance with table 87 shown in Figure 21. Where the pattem is of the Figure 15 form in which the colours Cl to C4 are used to implement transitional encoding of the X- and Y- sequence elements values, then a suitable form for the colour interpreter 311 is as shown in Figure 22. In the Figure 22 form of die colour interpreter 311, the separating zone colours C5 to C6 are used to generate the output bits BO and Bl. More particularly, the colour signal lines for colours C5 and C6 are both fed to an OR gate 320 die output of which provides bit BO (a logical " 1 " whenever d e sensing head is over a separating zone, and otherwise "0"). The signal on the colour signal line for colour C6, directly provides bit Bl. With regard to d e colour-square colours Cl to C4, 'old' and 'new' indications of die colour sensed by the sensing head 16 before and after it transits across a separating zone (or zones) are held in respective stores 322 and 321. Both stores are clocked off a " 1 " to "0" transition of the bit BO so that upon the sensing head moving to a position above a new colour square, die colour of that square is stored in store 321 whilst d e colour previously held in that store is transferred to store 322. The colours held in stores 321 and 322 are tiien used to drive a decoding matrix 323 to provide bits B2 and B3. The decoding matrix 323 implements tiie "Diagonal" section of d e decoding table of Figure 15C. Whilst, of course, not all transitions made by the sensing head 16 are diagonal transitions, it is possible to use just the "Diagonal" section of the decoding table because the X-bit and Y-bit information contained in this section is consistent with the "Horizontal" and "Vertical" sections, and the selection of whed er die X-bit, Y-bit, or both are to be taken can be made subsequently by reference to bits BO and Bl. The zone-related bits BO, Bl of die code output by the colour interpreter 311 are fed via the bus 81 to d e zone memory unit 84. This unit 84 is provided with two 2-bit memory latches 91 and 92 (respectively labelled 'LZ' and 'PZ' in Figure 18) which are both reset to '00' in a manner to be described hereinafter, following each successive intemipt-initiated transfer of an X and/or Y bit value to the sub-system 51. Subsequent to each resetting, as the sensing head 167 is moved across the pattem 20 and encounters one or more zones 26, 27, the LZ latch 91 is used to store the identity of die last zone (hence 'LZ' latch) traversed by the sensing head 16 and the PZ latch 92 is used to store d e identity of die last but one zone (that is, the penultimate zone and hence 'PZ' latch) traversed by the head 16. To this end, the unit 84 is further provided with a zone comparator 89 and a latch control unit 90. The zone comparator 89 is enabled when BO = ' 1' (i.e when die head 16 is over a zone 26, 27) and in mis state is operative to compare the current value of the pair of bits BO and Bl as provided on bus 81, with die value stored in the LZ latch 91. If these values are the same, men the output of the comparator remains low (which is also its condition when the comparator is not enabled); if the compared values differ, the output of the comparator goes high and this transition causes the latch control unit 90 first to clock the contents of the LZ latch 91 into the PZ latch 92, and then to clock the current values of bits BO, Bl into the LZ latch 91. The behaviour of the zone memory unit 84 following the resetting of the latches 91 and 92 is therefore as follows. Initially, the LZ and PZ latches 91 and 92 both hold '00'. This situation remains unaltered until the sensing head 16 traverses a separating zone 26, 27. At this point the comparator 89 is enabled and because the value of the bit pair B0, Bl inevitably differs from the contents of the LZ latch 91, the latch control unit 90 is triggered causing the current values of B0, Bl to be stored in d e latch 91. The contents of the LZ and PZ latches thereafter remain unchanged unless and until latches 91, 92 are reset or the sensing head 16 traverses a zone having an identity (as indicated by bit Bl) different from mat of the zone in respect of which bits B0 and Bl were previously stored in LZ latch 91. In tiiis latter case, die zone comparator 89 will trigger the latch control unit to store the contents of die LZ latch 91 into die PZ latch 92 and store the new current values of B0 and Bl into LZ latch 91. It will be noted that the zone memory unit 84 does not register the second occurrence of a separating zone with the same identity as a previously stored zone. The reason for this is that such a second occurrence should not, in fact, occur in practice before the latches 91, 92 are reset so that any apparent second occurrence can generally be ignored. The value of the BO, Bl bit pair stored in the LZ latch 91 is output as signal LZ and similarly, die value of the BO, Bl bit pair stored in the PZ latch 92 is output as signal PZ. The control state machine 82 has four states (Idle, Latch, I-Enable, Reset) inter-related in the manner indicated by the state transition diagram shown within the box representing the state machine 82 in Figure 18. The conditions causing transitions between the states are indicated on the arcs linking the states, these conditions and the actions associated with each state, are described below. Idle State - Entered from the Reset state one clock pulse after the latter has been entered (as indicated by T on the arc linking the Idle and Reset states). No action associated with this state. Latch State - Entered from the Idle state when BO = '0' (i.e. the sensing head 16 is over a colour square 21) and, at the same time, the contents of the LZ latch is other than '00'. Upon entry into this state, a signal 'LATCH' is output from the state machine to latch the values of bits B2 and B3 into the two-cell latch 85 (bit B2 being the X bit value and bit B3 the Y bit value); latching actually occurs following a small delay sufficient to ensure B2 and B3 have settled. I-Enable State Entered from the Latch state one clock pulse after the latter has been entered. Upon entry into this state, a signal 'INT ENABLE' is output from the state machine 82 to enable the interrupt generator 83 to initiate transfer of one or botii of the bit values held in latch 85 to the processor sub-system 51. Reset State - Entered from the I-Enable state when the value FLAG of the flag register 86 equals ' 1 ' (that is, following completion of a bit-value transfer to the processor sub-system 51). Upon entry into this state, a signal 'RESET' is output from the state machine to reset the LZ and PZ latches 91, 92, the X/Y latch 85 and the flag register 86 ready for a new cycle of operation. The state machine 82 thus effects one cycle of operation from the Idle state, via its Latch, I-Enable and Reset states and back to its Idle state, whenever the sensing head 16 encounters a colour square 21 after having crossed a separating zone 26, 27 subsequent to the last resetting of the LZ latch, that is, subsequent to the last cycle of operation of the state machine. During execution of a cycle of operation, the state machine 82 brings about me transfer of an X and/or Y sequence bit value to the processor sub-system 51 and then sets up die low-level hardware to recognize a new X and/or Y bit. The intermpt generator 83 determines whether an X bit, a Y bit or both are to be transferred to die processor sub-system 51 and initiates this transfer, when enabled by the signal ENT ENABLE from the state machine 82, by asserting an appropriate one of tiiree intermpts. The intermpt generator 83 is built around decoding logic that determines whetiier an X and/or Y bit is to be transferred in dependence on the values of the signals LZ and PZ, this determination being in accordance witii the truth table 88 shown within the box representing die interrupt generator 83 in Figure 18. In this truth table 88, the values of LZ and PZ have been shown as ordered pairs of binary values, the first value corresponding to tiie stored value of BO, and the second to the stored value of Bl. Because the signals LZ and PZ cannot take on the value '01', entries in the table 88 corresponding to tiiis value have been struck through. Furthermore, entries corresponding to LZ = '00' are given as 'N.A' ('no action') because no bit transfer can take place in such circumstances as the intermpt generator cannot be enabled by the state machine 82 to generate an interrupt, die latter being held in its Idle state until LZ changes from '00'. However, when PZ = '00' and LZ equals '10', die X bit value (but not the Y bit value) held in latch 85 should be transferred; this is because the LZ and PZ signals show that the only separating zone traversed since the last transfer is one indicating that die head 16 has been moved along die X- sequence whereby a new X bit value (but not a new Y bit value) is available. Similarly, when PZ = '00' and LZ equal ' 11' the Y bit value (but not the X bit value) held in latch 85 should be transferred (the LZ and PZ signals show that only a zone indicating traversal of the Y-sequence have been encountered since die last transfer). When both LZ and PZ have their BO bit equal to ' 1 ' (implying that zones indicating movement along both d e X and Y sequences have been encountered since the last transfer), then botii die X and Y bits in latch 85 should be transferred. Upon the intermpt generator 83 being enabled by die signal 'INT ENABLE' from the state machine 82, the generator 83 asserts one of three intermpts as indicated by die truth table 88. Thus, if only the X bit value is to be transferred from die latch 85, an intermpt 'Take-X' is asserted. If only d e Y bit value is to be transferred from the latch 85, an interrupt 'Take-Y' is asserted. If both die X and Y values are to be transferred, an intermpt 'Take Both' is asserted. Two examples of the overall behaviour of the low-level hardware 50 will now be given for the Figure 12 pattem witii reference to the two sensing-head movement tracks A and B shown in that Figure. Consider, first, movement of the head 16 along track A from an initial square 21 A having a colour representing X and Y sequence bit values of 1' and '0' respectively (see C3 in table 87 of Figure 21). It will be seen tiiat track A is parallel to the A P axis, that is, along the X sequence only. Assuming that die control state machine 84 has just completed a cycle of operation so that the latches 91, 92 and 85 and die flag register 86 are all in a reset state, then the code value '0010' output on bus 81 from the colour interpreter 311 causes no action, the state machine 82 being in its Idle state needing LZ to change from '00' and die zone memory being disabled awaiting the traversal of a separating zone. As the sensing head 16 moves along track A, it encounters an X-sequence separating zone 26A (colour C5) causing the colour interpreter 311 to output a code value ' 1000'. As a result, the zone memory 84 is activated and bits B0 and Bl of the code ('10') are latched into the LZ latch 91 (the PZ latch PZ continues to hold '00'); the state machine 82 remains in its Idle state. The sensing head 16 next encounters colour square 21B having a colour (colour Cl) representing X and Y sequence bit values of '0' and '0' respectively. As a result, the colour interpreter 311 outputs a code value '0000' on bus 81. Because LZ now equals ' 10', when die code value '0000' is placed on bus 81, the state machine 82 is caused to transit from its Idle state first to its Latch state to latch in the X and Y bit values ('0' and '0') into die X/Y latch 85, and then to its I-Enable state in which it enables the interrupt generator 83. With LZ and PZ having values of ' 10' and '00' respectively, die intermpt generator 83 asserts the 'Take-X' intermpt to tell the processor sub-system that a new X bit value is available and should be fetched. After the sub-system 51 has fetched the X-bit value from latch 85, it sets FLAG = T thereby causing the state machine 82 to transit to its Reset state, resetting elements 85, 86, 91 and 92 and then to its Idle state. Considering, next, movement of me head 16 along track B from square 21A with the elements 95, 86, 91 and 92 having just been reset by d e state machine 82 on its way to remming to its Idle state. Operation of the low level hardware proceeds as described above as die sensing head is moved from square 21 A and across the X- sequence separating zone 26A; thus, die value ' 10' becomes stored in the LZ latch 91 whilst die PZ latch 92 retains '00' and the state machine remains in its Idle state. Next, however, the sensing head 16 as it moves along track B, instead of encountering a new colour square (which would have triggered a transfer operation as described above), encounters a Y-sequence separating zone 27A (colour C6). This causes the colour interpreter to output a code value ' 1100' on bus 81 which, in mm, causes die zone memory to transfer the contents ('10') of the LZ latch 91 to the PZ latch 92, and store d e values of B0 and Bl on bus 81 ('11') into die LZ latch 91. In due course, the sensing head 16 is moved along track B to colour square 21C which has a colour (colour C2) representing X and Y sequence bit values of '0' and T respectively. The colour interpreter 311 outputs a code '0001' onto bus 81 which triggers die control state machine from its Idle state and results in the intermpt generator being enabled and asserting the 'Take Both' intermpt to indicate to the processor sub-system that both new X and new Y bit values are available. Upon the processor sub-system completing the transfer of the X and Y bit values, the low level hardware is reset and its cycle of operation re-initiated. The operation of the low level hardware when following tracks similar to tracks A and B across a pattem of die Figure 15 form is substantially the same as that described above except, of course, with regard to die operation of the colour interpreter 311. The ability of the Figure 18 hardware 50 to cope with tracks that cross two separating zones 26, 27 in succession without an intervening colour square 21, enables the hardware 50 to deal with most tracks across die pattem, particularly since die size of the colour squares shown in the Figure 12 pattem can generally be increased relative to that of die zones 26, 27. However, if the sensing head 16 is moved along an abnormal track for which the low-level hardware is not designed, d e apparatus as a whole would, in the worst case, simply have to re-initiate location acquisition which is not, in itself, a severe penalty. The low-level hardware 50 is further operative to generate a lift-off intermpt signal when it detects tiiat the sensing head 16 has been moved away from the pattem 20; tiiis functionality has not been represented in Figure 18 for reasons of clarity. Circuitry for implementing die low level hardware will be apparent to persons skilled in the art and will therefore not be described in further detail herein. Turning now to be a consideration of die high level processor sub-system 51, this sub¬ system is operative to n several processes concurrently, these being a process 60 (the XBIT process) for effecting position determination in the X co-ordinate direction on the basis of die X bit values supplied by the low-level hardware 50, a process 61 (me YBIT process) for effecting position determination in the Y co-ordinate direction on the basis of the Y bit values supplied by the hardware 50, and an output process 62 for outputting absolute position information on the basis of me X and Y positions determined by processes 60 and 61. The output process 62 interfaces with the XBIT and YBIT processes 60 and 61 through an output buffer 63 in the form of two first-in, first-out FIFOs 76,77 buffer operative to store a series of absolute X and Y positions respectively. Each entry in the FIFOs 76,77 comprises a new X or Y position as appropriate, a sequence number indicating the order of generation of the X and Y entries, and an associated flag bit (the X/Y flag) and each entry having a second associated flag (the Defer Flag) which, if set, indicates that the entry is only provisional and not yet to be output. The purpose of the Defer Flag will be explained more fully hereinafter. It will be appreciated that the functionality provided by the sub-system 51 encompasses part of the functionality of the sub-pattem image processing unit 12 of Figure 1 as well as all of the functionality of the position-determining unit 13. The sub-system 51 can be implemented using a suitable multi-tasking processor system as will be apparent to persons skilled in the art. Considering die operation of the processor sub-system 51 in more detail, the sub¬ system 51 interfaces with die low-level hardware 50 through an X/Y bit input buffer 64 in die form of a first-in, first-out (FIFO) buffer. Upon the 'Take X' intermpt being asserted by the hardware 50 to indicate die availability of a new X-sequence bit value, the sub-system 51 executes an intermpt service routine ISR-1 that loads die X bit value in latch 85 into the buffer 64 together witii an indication tiiat it is an X bit value. Similarly, upon the 'Take-Y' intermpt being asserted to indicate the availability of a new Y-sequence bit value, the sub-system 51 executes an intermpt service routine ISR- 2 tiiat loads the Y bit value in latch 85 into me buffer 64, together witii an indication tiiat it is a Y bit value. When die 'Take Both' intermpt is asserted by the hardware 50, the sub-system 51 executes an intermpt service routine ISR-3 that loads the X and Y bit values in latch 85 into the buffer 64 in that order togetiier with respective indications of the sequence with which each is associated. The buffer 64 thus forms an input queue of X and Y bit values and the XBIT and YBIT processes 60 and 61 take bits from me head of this queue for processing, X bit values being taken only by the XBIT process 60 and Y bit values being taken only by the YBIT process 61. Finally with regard to the interaction of the low-level hardware 50 with the sub-system 51, the lift off intermpt generated by die low-level hardware 50 causes the sub-system 51 to execute an intermpt service routine ISR-4 that resets all three main processes 60, 61, 62 and clears the buffers 63 and 64. The XBIT process 60 will next be described, it being appreciated that the YBIT process 61 is essentially the same except that it operates on Y sequence bits rather tiian X sequence bits. The XBIT process utilizes four main data structures, these being: an X-sequence register 66 storing the X-sequence bit pattem; an X-sequence window index 67 which for each possible window length sequence (N bits in length) present in the X-sequence (taking both directions of reading), provides a pointer into d e X-sequence indicating the position of the last bit of the window-length sequence (in terms of an offset from the start of the X-sequence) together with a direction flag indicating d e direction of reading of the X-sequence; - an X-pointer list 68 for holding one or more X-position pointers (and their associated direction flags) for indicating the current actual X position (during normal operation), or current candidate X positions (during a reversal recovery process to be described below); an initial X-position shift register 69 of length N used to assemble a window- length sequence of N bits from the sensed X-sequence bits during an initial absolute position determination phase of operation of the apparatus. The YBIT process utilizes corresponding data structures, namely a Y-sequence register 70, a Y-sequence window index 71, a Y pointer list 72, and an initial Y-position register 73. Figure 23 illustrates the XBIT process 60 in the form of a flow chart. The XBIT process controls position tracking in the X co-ordinate direction with the actual tracking being effected by appropriate sub-routines. There are three basic tracking modes, these being: an "absolute" tracking mode in which absolute position determination is effected by building up a window length sequence of X bits in register and then using die window index 67 to identify an absolute position, this tracking mode being used initially to ascertain an initial absolute position; - an "incremental" tracking mode in which each new X bit received is assumed to increment die current X position in the direction indicated by the direction flag associated with the current position pointer, this mode being used once an initial absolute position has been established and until the actual next X-bit sensed does not match the next X-sequence bit in the direction indicated by die direction flag (generally such a mismatch will have occurred due to a direction of movement reversal); and a "reversal recovery" tracking mode in which an attempt is made to recover from a mismatch occurring in the incremental tracking mode by assuming that a movement direction reversal has occurred and tiien seeking to identify at what position the reversal took place. Tracking in the "absolute", "incremental" and "reversal recovery" tracking modes is effected by routines 100, 101, 102 respectively with a further routine 103 ("RR Start¬ up") being associated with the reversal recovery routine 102 as an initialization routine. A global variable TMODE serves to identify die currently operative tracking mode, tiiis variable being assigned one of die values 'A', T, 'R' to indicate the "absolute", "incremental" or "reversal recovery" tracking mode respectively. A further global variable RESULT is used to indicate whether the tracking routines have been successful in their tasks, this variable having possible values 'S' to indicate success, 'D' to indicate that judgement needs to be deferred and 'L' to indicate that the routine has irrecoverably lost track of the current position. Three counts Cnl, Cn2 and Cn3 are also used in the operation of the XBIT process and its sub-routines as will become clear below. Considering next the Figure 23 flow chart in more detail, after start-up of the XBIT process, an initialization step 105 is instigated. During step 105 die X pointer list 68 is reset to empty, the initial X-position register 64 is reset to zero and the output FIFOs 76,77 are flushed. In addition, die value of "A" is assigned to the variable TMODE to start the tracking process in the absolute tracking mode, die value "L" is assigned to die variable RESULT to indicate that tracking is to be started from a completely lost condition, and the value '0' is assigned to the counts Cnl, Cn2 and Cn3. Thereafter, the XBIT process 60 executes step 106 in which it examines the top entry in the X/Y bit buffer 64 and if this is an X bit value it removes the value from the buffer 64 and stores it in variable NEW-X. On the otiier hand, if the top entry in the buffer 64 is not an X bit value, then the step 106 is repeated at intervals until an X value appears at the head of buffer 64 (this reiteration is internal to step 106). The XBIT process 60 now proceeds to select and execute die appropriate tracking routine, this selection being effected in decision step 107 in dependence on the current value of the variable TMODE. Immediately following start-up of the XBIT process 60, the absolute tracking routine 100 is selected and executed since, of course, die value "A" has been assigned to TMODE during step 105. However, as will be seen below, as tracking continues the values stored in TMODE may change to "I" or "R" in which case the decision step 107 will select the incremental tracking routine 101 or the reversal recovery routine 102 respectively. Whichever tracking routine 100, 101 and 102 is executed, upon completion of the selected routine the XBIT process 60 proceeds to decision step 108 where it tests the value of the variable RESULT used to indicate the success or otherwise of the executed tracking routine. If the value "L" is retumed in RESULT, then this is taken as indicating that position tracking has irrecoverably failed and must be started again from scratch by returning to the initialization step 105. If the value "S" is retumed in RESULT, tiien this indicates that the current X position is known with certainty in which case die incremental tracking mode can be implemented (this being brought about in step 109 by the value "I" being assigned to the variable TMODE). If die value "D" is returned in RESULT, then this indicates tiiat the current X position is not known for certain, but is in the process of being ascertained; this situation can occur either when the XBIT process is in its absolute tracking mode and insufficient bits have yet been accumulated to enable die absolute tracking routine 60 to effect an absolute determination of the current X position, or when the process 60 is in its reversal recovery tracking mode and d e current X position has not been unambiguously determined. Generally, when RESULT is retumed witii "D", the tracking mode will not be changed so that die variable TMODE is unaltered. However, when reversal recovery is first initiated, this is effected by the incremental tracking routine 101 directly initiating the RR start-up routine 103 without the variable TMODE being set to "R"; in this circumstance the variable TMODE is set to die value "R" in step 110 when it is determined tiiat RESULT has a value D and the previous value of TMODE was "V (step 111). When either the value "S" or "D" is returned in RESULT, tiien after any appropriate value assignment to variable TMODE, the XBIT process remms to step 106 to fetch a new X bit value. The absolute incremental and reversal recovery tracking routines 100, 101 and 102 will now be described. Figure 24 is a flow chart of die absolute tracking routine 100. Upon entry into this routine, die new X bit value stored in NEW-X is entered into the initial X-position register 69 (step 120) to be accumulated witii other X bit values to form a window length pattem for the X-sequence. The total number of XBIT values currently accumulated in the register 69 is held in count Cnl. Step 121 tests whether count Cnl has yet reached the value N indicating that a window length sequence of X bits has been accumulated in the shift register 69. If count Cnl is less than N, then the count is incremented (step 122) to take account of the newly added XBIT value, an X position entry is made in the output FIFO 76 with the associated Defer Flag set (step 123) for reasons which will become clear later, and the value "D" is assigned to RESULT (step 124) to indicate tiiat a window lengdi sequence is still being accumulated; thereafter d e absolute tracking routine is exited. If the test carried out in step 121 indicates from the value of count Cnl that a window lengdi sequence of N bits has been accumulated in the register 69, tiien the absolute tracking routine proceeds to step 125 where it looks up the value of the window length sequence stored in register 69 in the X-window index 67 with a view to ascertaining the current absolute X position. If the window lengdi sequence is successfully found in the index 67, then a pointer to the corresponding position in the X-sequence is entered into the X-pointer list 68, together with a direction flag indicating the direction of reading of the X-sequence giving the window length sequence (step 127). An X position entry is also made in d e output FIFO 76 with the associated Defer Flag not set, indicating that the entry is unconditional. Because the current position in the X- sequence is now known, it is possible to replace the last (N-l) X entries flagged as Defer entries in the output FIFO 76 with actual X-position values and tiiis is also done in step 127. Since any X entries flagged as Defer, tiiat are positioned ahead of the replaced X entries in FIFO 76 cannot be successively recovered, such entries must be deleted (again, this is carried out in step 127). In step 128, die value "S" is assigned to RESULT to indicate tiiat the X-position has been successfully found and the incremental tracking mode may now be entered. If d e window lengdi sequence accumulated in register 69 is not found in index 67 (steps 125 and 126) tiien this indicates that one or more of the accumulated bits are in error so that the accumulation process must be continued. In this case, steps 123 and 124 are next executed before the absolute tracking routine 100 is exited. Note that it is not necessary to increment the count Cl because N bits have ready been accumulated and further processing takes place on the basis of losing the oldest bit accumulated in the register 69 as each new X bit is added to the register (the register 69 being of window length N). In due course die errored bit or bits will become shifted out of the register 69 and die window length sequence remaining in the register will be successfully located in d e index 67. Figure 25 is a flow chart of the incremental tracking routine 101. This tracking routine works on the basis that once the absolute X-position has been established, each new X bit can simply be used to increment the X-position by 1, the routine working on the assumption that the direction of X movement remains unaltered from mat which was associated with the initial absolute position determination. However, in order to check d e validity of this assumption, the value of each new bit as supplied from the low-level hardware 50 is compared with the value of die next X-sequence bit as predicted from the X-sequence stored in the register 66 given the current X-position and direction of movement (as indicated by the pointer in the pointer list 68). This check is carried out by step 130 in the Figure 25 flow chart. If the actual and predicted values of the new X-sequence bit match (step 131) then the assumption about direction of movement is assumed valid and the X-position pointer held in die list 68 is incremented in the direction of movement indicated by d e associated direction flag (step 132). Thereafter the new X-position is stored in d e output FIFO 76 with the associated Defer Flag not set (step 133) and the value "S" is stored in RESULT (step 134). If, however, the value of the new X-position actually sensed differs from mat predicted from the stored X-sequence, tiien a reversal of X-direction movement is assumed to have taken place and reversal recovery is initiated witii d e reversal recovery start-up routine (RR start¬ up 103) being called. Before describing the RR start-up routine 103 and the main reversal recovery routine 102, with reference to the flow charts of these routines shown in Figures 28 and 29 respectively, a general description will first be given of the reversal recovery process. Considering first die Figure 12 pattem, Figure 26A shows a series of seven colour squares 21 extending in the X-sequence direction, the squares representing X-sequence bits bO to b7. The colour squares 21 are separated by separating zones 26. Track C shows the course of the sensing head 16 as it is moved over the squares representing bits bO, bl, b2 and b3 at which point the direction of movement of the sensing head is reversed and it returns over squares representing bits b2, bl and bO. The dashed line marked track D is the track that the tracking process assumes the head 16 has followed from bit b3 until evidence is produced to the contrary. With the tracking in its incremental mode, as die sensing head 16 moves along d e initial portion of track C over the squares representing bits bO, bl, b2 and b3 each successive bit value sensed by the head 12 is matched with d e corresponding bit predicted from the X-sequence held in register 66. When d e direction of movement of the sensing head 16 is reversed over the square 21 representing bit b3, the next actual bit encountered is bit b2 whereas the next predicated bit is bit b4. In the current example, the X-sequence portion being traversed is such that die value of bit b2 equals that of bit b4. As a result, the bit value predicted by die incremental tracking routine matches that actually sensed so that the routine is not alerted to the fact that a reversal of direction took place over die square representing bit b3. The incremental tracking routine therefore assumes that the sensing head 16 is following track D. In due course the head 16 moves over the square representing bit bl and die incremental tracking routine tests the value of the sensed bit witii the value of the sequence bit b5 over which it believes the head 16 is now positioned. In die present example, me values of bits bl and b5 are die same so that the incremental tracking routine again fails to detect the reversal of movement direction that occurred over the square representing bit b3. The sensing head 16 continues its movement along track C and reaches the square representing bit bO. In the present example the value of this bit bO is different from that of b6 so that when the incremental tracking process tests the value of the next predicted bit along track D (this being bit b6), it discovers tiiat the predicted bit value differs from the sensed bit value; at this time, therefore, die incremental tracking process detects that the sensing head 16 has reversed its direction of movement at some earlier stage. However, the tracking process has no means of directiy ascertaining the point at which reversal took place. Figure 26B is similar to Figure 26A in that it shows the seven colour squares of the Figure 12 pattem that represent bits bO to b7, but in this case track C has been drawn to show direction reversal occurring over a separating zone 26 rather than over a colour square 21. In the illustrated example, direction reversal occurs over the zone 26 separating the squares representing bits b3 and b4. The first square encountered by the sensing head 16 after this reversal is the square representing bit b3 whereas the incremental tracking process assumes that the encountered square is that representing bit b4. In the present example, the value of bit b3 equals that of b4 so that the incremental tracking process does not detect the reversal when it compares the actual value of bit b3 with the predicted value. Similarly, the next subsequent square encountered by d e head 16 is that representing bit b2 and in the present example this has a value corresponding to the bit b5 so that again, d e tracking process does not detect the direction reversal. However, in due course the head 16 moves over the square representing bit bl which the tracking process tries to match with the predicted value of bit b6; in the present example me value of bits bl and b6 differ so tiiat at this point the tracking process detects tiiat a direction reversal has occurred. Considering next d e Figure 15 pattem, Figure 26C is generally similar to Figures 26A and B in that it shows a series of seven colour squares 21 extending in the X-sequence direction and separated by zones 26; now, however, it is the transitions between the squares that represent the X-sequence bits (here, bl to b6). Track C shows the course of the sensing head 16 as it effects transitions representing bits bl, b2 and b3 at which point the direction of movement of the sensing head is reversed over a colour square and the sensing head, now moving in the opposite direction, effects transitions representing bits b3, b2 and bl. The dashed line marked track D is the track that die tracking process assumes the head 16 has followed from bit b3 until evidence is produced to die contrary. With the tracking in its incremental mode, as the sensing head 16 moves along the initial portion of track C sensing bits bl, b2 and b3, each successive bit value sensed by the head 12 is matched with the corresponding bit predicted from the X-sequence held in register 66. When the direction of movement of the sensing head 16 is reversed, die next actual bit sensed is bit b3 whereas the next predicted bit is bit b4. In the current example, the X-sequence portion being traversed is such that die value of bit b2 equals that of bit b4. As a result, the bit value predicted by the incremental tracking routine matches that actually sensed so tiiat the routine is not alerted to die fact that a reversal of direction took place over the square common to the transitions representing bits b3 and b4. The incremental tracking routine therefore assumes that the sensing head 16 is following track D. In due course the head 16 effects the transition representing bit b2 and die incremental tracking routine tests the value of the sensed bit witii the value of the sequence bit b5 which it believes the head 16 has just sensed. In the present example, the values of bits b2 and b5 are the same so that the incremental tracking routine again fails to detect the reversal of movement direction that occurred over the square common to the transitions representing bits b3 and b4. The sensing head 16 continues its movement along track C and in due course senses bit bl. In die present example the value of this bit bl is different from mat of b6 so that when the incremental tracking process tests the value of the next predicted bit along track D (this being bit b6), it discovers that the predicted bit value differs from the sensed bit value; at this time, therefore, the incremental tracking process detects that the sensing head 16 has reversed its direction of movement at some earlier stage. However, the tracking process has no means of directly ascertaining the point at which reversal took place. Figure 26D is similar to Figure 26C but in this case track C has been drawn to show direction reversal occurring over a separating zone 26 rather than over a colour square 21. In the illustrated example, direction reversal occurs over the zone 26 in the transition representing bit b4. The first square encountered by the sensing head 16 after this reversal is die square last encountered by d e head 16 witii the result that a bit of value "0" is decoded (see table in Figure 15C), whereas the incremental tracking process assumes that the sensed bit is bit b4. In die present example, die value of bit b4 equals "0" so that the incremental tracking process does not detect the reversal when it compares the actual value of the sensed bit with the predicted value. Similarly, the next subsequent bit sensed by the head 16 is bit b3 and in the present example this has a value corresponding to the bit b5 so tiiat again, the tracking process does not detect the direction reversal. However, in due course the head 16 senses bit b2 which the tracking process tries to match with die predicted value of bit b6; in the present example the value of bits bl and b6 differ so that at this point the tracking process detects that a direction reversal has occurred. For both die Figure 12 and the Figure 15 pattem examples of Figures 26A to D, all the tracking process is aware of is that at bit b6 a discrepancy has occurred between d e sensed bit value and die predicted bit value. The tracking process does not know whether the assumed direction reversal has occurred over a colour square or a separating zone. The only limitation that can be assumed on where reversal occurred is that it must have taken place within N/2 bits of the bit b6 (where N is die window length of the X sequence) in a direction opposite to tiiat previously assumed as die directional movement of me sensing head 16. However, the actual sequence bit values over d e preceding N bits, place certain constraints on where die reversal could have occurred because, of course, die succession of bit values tiiat occur in the sequence from die reversal position but in the opposite direction to tiiat assumed (i.e in the actual direction of movement) must be identical to the sequence of bits actually sensed. It is therefore possible to postulate a number of different reversal positions (with each of which there is an associated current actual position) and to carry out an initial elimination process by comparing the succession of bit values tiiat would have been encountered from each reversal position (as predicted from the stored copy of the sequence) with die bit values actually sensed. In fact, in the present embodiment, rather than storing the values of the bits sensed for use in the aforesaid elimination process, use is made of die fact that, for each proposed reversal position, the relevant sensed bit values can be derived directiy from the segment of die sequence extending from die proposed reversal position to the currently- predicted (but erroneous) position, the sensed bit values being: (i) die same as me segment bit values from the proposed reversal position to the position immediately preceding the currently-predicted one (this is true since otherwise, a reversal would have been detected sooner); (ii) for the current bit, the opposite value to that given by the sequence segment (this is so because at the current bit, a reversal was detected as a result of the predicted bit value differing from the sensed bit value). Aldiough the present embodiment carries out the elimination of proposed reversal positions by using the stored sequence as a means of deriving the bit values actually sensed, it will be appreciated that embodiments that directly store the last N bit values actually sensed are also possible. The initial elimination process of potential reversal positions as carried out by the present embodiment, is illustrated in Figure 23, the process itself being implemented by the RR Start-up routine 103. In order to eliminate certain reversal positions, a number of hypotheses are constructed each postulating tiiat direction reversal took place at a sequence bit or between two such bits; the possible reversal positions are represented in Figure 27 by the sequence structure abstraction shown on the right-hand side of tiiat Figure and composed of sequence bit squares sbO to sb6 (corresponding to bits bO to b6) and intermediate zones I between die sequence bit squares, direction reversal being possible at both sequence bit squares and intermediate zones I. In terms of the Figure 12 pattem (absolute value encoding) direction reversal at a sequence bit square or at an intermediate zone respectively corresponds to a reversal at a colour square or at a separating zone, whilst in terms of the Figure 15 pattem (transitional encoding), direction reversal at a sequence bit square or at an intermediate zone respectively corresponds to reversal at a separating zone (in as much as a bit is represented by a transition across such a zone) or at a colour square. The sequence structure abstraction of Figure 27 is thus applicable to botii absolute-value encoding and transition encoding and as the RR Start- up routine 103 and Reversal Recovery routine 102 both operate to this abstraction, these routines are also applicable to both absolute-value encoding and to transitional encoding. To construct and test die reversal-position hypotheses, pointers are generated for each of the possible current actual X-sequence positions. For the purposes of the present explanation, if p 0 represents the pointer pointing to the sequence bit square (Sb6 in the example) at which a reversal is detected, then the pointer pointing to the preceding sequence bit square (sb5 in the example) is referenced (p 0 -l), the pointer pointing to the sequence bit square before that (sb4 in the example) is referenced (Po-2) and so on. In practice, each pointer points to the sequence bit represented by die corresponding sequence bit square of the sequence stmcmre abstraction and in the following description the sequence bits themselves are generally referred to rather than the corresponding sequence bit square abstraction. Of all the possible hypotheses regarding reversal position, there is one tiiat has a special character in that it can be discounted for the Figure 12 pattem and is initially untestable for the Figure 15 pattem; this hypothesis (hypod esis 0) is that direction reversal has occurred at the current bit position. It will be appreciated tiiat this hypodiesis does not have significance for die Figure 12 pattem; however, for die Figure 15 pattem, it corresponds to reversal occurring over a separating zone (as in Figure 26D). Hypothesis 0 is not initially testable for the Figure 15 pattem because there is no information on which to carry out any test. Hypothesis 0 must therefore be retained as possibly true in the case of the Figure 15 pattem (and, in fact, can also be retained for the Figure 12 pattem as subsequent tests will generally eliminate it). As hypothesis 0 is not initially tested, it has not been shown in Figure 27. The first testable hypothesis (hypothesis 1 shown in block 140, Figure 23) is that reversal occurred at the intermediate zone I intermediate the sequence bits pointed to by the pointers p 0 , (p 0 -l). this zone being indicated by the expression "I (p 0 , (p 0 -l))" shown in Figure 27. Further according to hypothesis 1, the current actual position of the sensing head along die X-sequence is at the position pointed to by pointer (po-1), that is, bit b5 in the example. This hypothesis can be immediately rejected if the value of the bit pointed to by the pointer (po-1) is the same as the value of the bit pointed to by the pointer p 0 (in the example if b5 = b6) since it is known that the value of the corresponding sensed bit differs from that of the bit pointed to by the pointer p . It should be noted tiiat in Figure 27 the convention is used that where a pointer is enclosed in square brackets it is the value of the bit pointed to by that pointer that is being referenced. If the test for hypothesis 1 to be true is passed, then the pointer (p 0 -l) is retained as possibly pointing to the current actual position of the sensing head 16. However, if die test for hypothesis 1 is failed, then d e pointer (p 0 -l) s discarded because it is known that the current actual position of the head 16 cannot be at d e bit pointed to by that pointer. Having tested hypodiesis 1, hypothesis 2 (shown in block 141 in Figure 23) is next considered. Hypodiesis 2 is that reversal took place at the bit pointed to by pointer (p*,- 1) and tiiat the current actual position of the sensing head is at the bit pointed to by d e pointer (p 0 -2). Again, the hypothesis is tested by comparing the value of the bit pointed to by pointer p 0 with that at the hypothesized actual position, that is, the position indicated by pointer (po-2). If the tested bit values are equal then hypothesis 2 can be rejected since it is known that the value of the corresponding sensed bit differs from that of die bit pointed to by Po. Pointer (p 0 -2) is, in this case, discarded. On the other hand if d e tested bit values are different, then hypothesis 2 is not rejected and pointer (p 0 -2) is retained as a possible indicator of the current actual position. After hypothesis 2 has been tested, hypothesis 3 (block 142) is next considered. This hypodiesis postulates that reversal occurred over the zone I separating the bits pointed to by pointer (p 0 -l) and (p 0 -2), the current actual position of die sensing head being at the bit pointed to by pointer (po-3). This time, the hypothesis can be subjected to two tests, the first test being one corresponding to the tests carried out for hypothesis 2 and 1 by which the value of the bit pointed to by pointer po is compared with the value of the bit pointed to by the pointer that according to the hypothesis, indicates the current actual position; the hypodiesis is discarded if these bit values are equal. The second test for hypothesis 3 is whether the values of the bits enclosed between the incorrectly assumed position and the hypothesised actual position are equal (the bit value on the side of die postulated reversal position nearest position DQ being a true indicator of the value of the corresponding sensed bit). In otiier words, the value of the bit pointed to by pointer (p 0 -l) is compared with die value of the bit pointed to by pointer (Po-2) and the hypothesis 3 is rejected and pointer (p 0 -3) is discarded as a potential actual position indicator if the compared bit values differ. Next, hypothesis 4 (block 143 in Figure 23) is constmcted and tested, this hypothesis being that reversal occurred at die bit pointed to by pointer (p b -2) and that the actual current position is indicated by the pointer (po-4). The testing of this hypothesis proceeds in essentially the same manner as for hypothesis 3 and will therefore not be described in detail. Similarly, further hypotheses are constmcted and tested for reversal positions and actual current positions successively further away from the position pointed to by pointer po. It will be appreciated tiiat for each hypothesised reversal position and corresponding hypotiiesised actual current position, there will be: (i) in every case (except in respect of hypothesis 0), a first test involving the comparison of the bit values at the hypothesised actual current position (po-Cn2) and at the position pointed to by p 0 (the hypothesis being rejected if those values are the same as the corresponding sensed bit must have a value different to tiiat of the bit pointed to by po); (ii) for cases where the hypothesised reversal position is spaced by at least one bit from the hypothesised current position, one or more second tests in which the bit values of the bits of the or each pair of bits symmetrically disposed about d e hypothesised reversal position are compared (die hypodiesis being rejected if these values differ as the bit of each pair which lies nearer p 0 has a value equal to the corresponding sensed bit). Clearly the further away that the hypothesized actual position is from position po, the more opportunities there are to test the hypothesis concerned since the number of enclosed bit pairs which are subject to the second test, increases the greater the separation of the hypothesized actual position is from p o . In due course all relevant hypotheses will have been constmcted and tested (a relevant hypodiesis being one for which the hypothesized acmal position lies within the window length range of position po). At the end of this process there will only be a few remaining valid hypotiieses, these hypotheses being represented by the pointers to their hypotiiesized current acmal position. As already indicated the process generally described above with reference to Figure 27 is implemented by the RR start-up routine 103 that is initiated by die incremental tracking routine 101 upon discovery of a mismatch between a sensed bit value and die predicted bit value. Figure 28 shows a flow chart of the RR start-up routine 103. Upon entering into die routine, the value " 1" is assigned to count Cn2, the value "0" is assigned to count Cn3, and the pointer po is placed in the pointer list 68 (step 150). Next, a pointer (p 0 -Cn2) is created, this being a pointer to a hypothesized current actual position (step 151). Thereafter, the tests possible for checking validity of the hypothesized current actual position are carried out (step 152), these being the first and second tests described above. If one or more of me test or tests available for testing the currently hypothesized actual position is failed, then the corresponding pointer (p 0 -Cn2) is discarded (step 153). On the other hand if all tests for the hypothesized current acmal position are passed, then the hypothesized current acmal position pointer is stored in the pointer list 68 (step 154) with its associated direction flag indicating a direction opposite to that associated with pointer p 0 . After storage or discardal of die pointer (po-Cn2), count Cn2 is incremented to keep track of however many pointers to hypothesized current acmal positions have been created and tested (step 155). If the incremented value of count Cn2 exceeds the window length N of the X-sequence, then no further pointers to hypothesized current acmal position are created (see step 156). At this stage, the pointer p 0 may be discarded from the pointer list 68 if the pattem 20 is of the Figure 12 form. If the value of count Cn2 is less than N when tested in step 156, tiien the routine loops back to step 151 to create another pointer to a new hypothesized current actual position, the process of steps 151 to 155 being repeated until pointers to all possible current actual positions have been created and tested. Next, the Defer Flags of the preceding N/2 X position entries in the output FIFO 76 are set to indicate that one or more of these position values is incorrect and that updated values will be provided as soon as they are available (step 158). A new X- position entry with its Defer Flag set is also made in FIFO 76 in respect of the currently sensed bit on d e basis of which reversal was detected. Thereafter, die value of "D" is assigned to RESULT (step 159) and the RR start-up routine 103 is exited. Upon the RR start-up routine 103 being exited, d e pointer list 68 contains a set of pointers to a number of hypothesized acmal positions which have passed die initial validity tests. As a consequence of the value "D" being assigned to RESULT on exiting of the RR start-up routine 103, the tracking mode is changed to reversal recovery so that upon the sensing head 16 sensing a new X-sequence bit, the reversal recovery routine 102 will be entered. The newly provided X-sequence bit enables further testing of the hypothesized acmal current positions represented by the pointers stored in the pointer list 68 because the sensed bit value can be compared witii d e value predicted by taking each hypothesized current acmal position in mm. Thus, referring to the flow chart of the reversal recovery routine shown in Figure 29, in step 161 the first next pointer in the pointer list 68 is taken and the value of the next bit predicted from this point is compared with the acmal sensed bit value (step 162). If tiiere is a mismatch between the predicted and sensed bit values, then the corresponding pointer is discarded from the pointer list 68 (step 163). On the otiier hand, if die predicted and sensed bit values correspond, then the relevant pointer is incremented and restored to the pointer list 68 (step 164). Thereafter a check is made to see if there are any further pointers to be processed in die pointer list 68 (step 165) and, if so, d e routine loops back to the step 161. Once all the pointers in the list 68 have been processed, the total number of pointers remaining in the list is examined (step 166). If no pointers remain in the list, then an irrecoverable situation has been encountered; this may have arisen either due to sensing errors or because the direction of movement has been reversed again during the reversal recovery process. In any case, the value "L" is assigned to RESULT (step 167) and d e reversal recovery routine is exited. However, if die number of pointers remaining in the pointer list 68 is only 1 , then it is assumed that this pointer correctly points to the current actual position of the sensing head. Accordingly, the routine 102 proceeds to derive actual X-position values for all the X-entries that have had their Defer Flags set in the output FIFO 76, these new position values being entered into the FIFO 76 together with the current acmal position (step 168). Thereafter the value "S" is assigned to RESULT and the reversal recovery routine is exited. If there are still multiple entries in the pointer list 68 so that it is not yet possible to decide what die acmal current X-position really is, then subject to certain criteria to be explained below, die reversal recovery routine makes a deferred entry into the output FIFO 76 by setting the defer flag of a new X entry (step 172) and assigns the value "D" to RESULT before exiting the reversal routine. Thereafter, the reversal recovery routine is executed as each new X bit value is read in until all pointers other than the correct one have been eliminated from the pointer list. If only one reversal has occurred and there are no reading errors, tiien the elimination process should be successful witiiin (N-2) iterations of the reversal recovery routine. Failure to isolate the correct pointer within (N-2) iterations indicates that the X-position has been irrecoverably lost. In order to detect tiiis situation the count Cn3 is incremented each time the test (step 166) is exited on tiie branch corresponding to multiple pointer entries in the list 68, this incrementing being effected in step 170. Thereafter, the value of count Cn3 is compared to d e value (N-2) (step 171) and only if Cn3 is less than or equal to (N-2) are steps 172 and 173 executed. If the value of count Cn3 is greater than (N-2) then the value "L" is assigned to RESULT (step 174) and the reversal recovery routine 180 is exited. In summary, it can be seen that the XBIT process 60 after having established an initial position by execution of the absolute tracking routine 100, proceeds to keep track of the current X-position by the incremental process implemented by incremental tracking routine 101. If the incremental tracking routine detects a discrepancy between the actual sensed bit value and the value of the next predicted bit of die X-sequence, then a reversal is assumed to have occurred and the reversal recovery process is initiated by execution of the RR start-up routine 103 to establish a set of pointers to possible current acmal X-positions and to carry out initial validity tests on these pointers. Thereafter, the reversal recovery 102 is executed as each new X bit value is read in and used to carry out further validity tests on the sets of possible pointers to the current acmal X-position. In due course the current X-position will either be established by routine 102 or a decision is made that the X-position has been irrecoverably lost. The YBIT process 61 operates in an analoguous manner for movement along the Y- sequence. The outputs of the XBIT and YBIT processes 60 and 61 are fed to the output buffer 63 as a succession of X and Y position entries for storage in the output FIFOs 76 and 77 respectively. The order in which X and Y position entries are received by die buffer 63 is kept track of by means of a sequence number generator 179 that is incremental each time a new X or Y entry is received, each new entry being stamped witii this sequence number (by the number being stored togemer with the entry in the corresponding FIFO 76,77). As previously noted, each entry also has an associated Defer Flag which can be set to indicate tiiat the entry is only a provisional one and should not be output from the processor sub-system 51. In fact, an entry flagged Defer may not initially have a corresponding position value, this value being supplied later (tiiis is the case both when the absolute tracking routine 100 is building up a window sequence prior to establishing an initial absolute position, and when d e reversal recovery routine 102 is still eliminating pointers from the set of possible pointers stored in the list 68). The XBIT and YBIT processes 60 and 61 can independently write to their corresponding FIFOs though if they both do so within a short time interval of each other, then both entries (the X and Y entries) are given sthe same sequence number. The output process 62 is prevented from colliding with the processes 60 and 61 and vice versa by an appropriate system of semaphores. The output process 62 will now be described witii reference to the flow chart shown in Figure 30. The basic operation of the output process is to take the head X and Y- position entries off the output FIFOs 76,77 and output them as the current coordinates of die sensing head 16. However, die process is complicated by the possibility of entries flagged Defer in the FIFOs 76,77. Not only is the output process 62 required to suspend output when a Defer entry is encountered, but die operation of the output process should preferably lag behind that of the XBIT and YBIT processes 60 and 61 so that a queue of entries builds up in the FIFOs 76,77 enabling the XBIT or YBIT process to set previously processed entries to Defer upon detection of reversal in either the X or Y coordinate direction. Nevertheless, where valid entries exist in the FIFOs 76,77 these should not be allowed to remain dormant forever. It will therefore be appreciated that the output process 62 needs to take account of a number of conflicting requirements and provide some satisfactory practical compromise in its operation. Turning now to a consideration of Figure 30, the first step executed by die output process is to examine the head entry of each of the output FIFOs 76,77 (step 180). If the Defer flag of the head entry is set (tested in step 181), then the output process loops back to step 180 and continues to check the head entry until the Defer flag is reset by the XBIT or YBIT process or until the entry is cancelled. If neither head entry has its Defer Flag set, then the output process next goes on to check the number of entries in each FIFO (step 182). If there are more than N/2 entries, the output process outputs the head entry of the FIFOs 76,77 as an X/Y coordinate pair. Thereafter, one or both head entries are removed according to criteria described below (step 186) and die output process then loops back to step 180. A typical output sequence of X/Y pairs and d e process of removing entries from the head of the FIFOs 76,77 will next be described, by reference to the following two lists giving typical contents of the FIFOs 76,77. X O/P FIFO 76 Y Q/P FIFO 77 x 7 y 4 y 6 y? In these lists, the top entry corresponds to the head entry of each FIFO and the entry suffixes correspond to the sequence number assigned to the entries. Each time step 185 is executed, die head entries of the two FIFOs are output as an X/Y coordinate pair. Thereafter, in step 186, the head entry of each list is examined and is deleted if: either the next entry in both lists are of equal age (as indicated by their suffixed sequence numbers), or the next entry in the list under examination is older (i.e has a lower sequence number) than the next entry in the older list. The two lists are examined simultaneously in the sense that when considering whether to delete the head of one list, comparison is made with the other ist prior to any removal of the head entry of that other list. Furthermore, the head entry of a list is not removed if ti si would leave the list empty. The foregoing deletion criteria has the effect of ensuring that every list entry is used and is used with the last value of the other list that was valid at die time it was taken. For the example lists given, the sequence of output of X/Y coordinate pairs would be as follows: Returning now to a consideration of Figure 30 if the check carried out in step 182 shows that the number of entries in the FIFO 63 is less than N/2, then a timer is started (step 183) and a time out tested for (step 184). If the timer is still timing then the process loops back to test 182. However, if the timer has timed out, die process proceeds to step 185 in which it processes the head entry of the FIFO. Steps 182 to 184 seek to ensure that generally there are at least N/2 entries in each of the FIFOs 76,77 (this number of entries being referred to as die 'target queue' length) but that if the rate of input of entries becomes very low, the entries towards the head of the FIFOs do not lie dormant but are shifted through at some rate determined by the period timed by steps 183 and 184. The target FIFO queue length of N/2 is chosen on the basis that when a reversal is detected, the preceding N/2 entries for die X (or Y) position are, if possible, set to Defer. However, since when a reversal is detected, it will generally only be the more recent of the last N/2 entries that are in error, target queue lengths of less than N/2 may be acceptable depending on the perceived relative importance of the factors involved. Finally with respect to the Figure 17 apparams, when the lift-off intermpt is asserted causing the intermpt service routine ISR-4 to be executed, the XBIT, YBIT and output processes 60, 61 and 62 are all re-initiated and the buffer 64 and output FIFOs 76,77 are flushed. The low-level hardware 50 is also reset in these circumstances. Many variations are, of course, possible to the above-described arrangement. Generally, it may be noted that the complexity of the apparams will depend on the form of the pattem being sensed and, in particular, how much information is directiy supplied by die pattem and how much must be deduced. Applications The described pattern-sensing apparams can be used in a number of different applications. For example, the basic apparams of Figure 1 can be used as a graphics tablet-. In such an application, if pattem features (cells) of 0.5 mm can be detected and the tablet has a surface of 500mm by 1000mm, then a binary sequence of 2000 elements can be used to construct a pattem of the type in which two binary sequences are arranged orthogonally (die same sequence can be used for both) This implies a window-length of eleven or twelve elements, depending on whether a PRBS or a reversible sequence is used; die sub-pattem length will therefore be 5.5 or 6mm in both directions. Where single pixel (pattem feature) sensing is employed, the position of the stylus can thus be determined with only a small movement of the stylus. Of course, where an area 6mm square is sensed at one time, then no stylus movement is required. Figure 31 illustrates use of the position-sensing apparams as an overlay for a screen 30 of a workstation monitor 31 (shown in section). The pattem-carrying member 14 is made of a material transparent to visible light and the pattem itself is printed on the member 14 in an infra-red reflective substance that is also transparent to visible light. As a result, the screen display can be viewed through the pattem 20 and member 14. To indicate a particular position on the screen (for example, for the purpose of selecting a particular function), the stylus 11 is used to point to the location. The sensing head 16 of the stylus is arranged to be sensitive to the infra-red reflectivity and can therefore read the pattem 20. The functions of the sub-pattem image processing unit 12 and the position determining unit 13 of Figure 1 , are carried out by the processing unit 32 of the workstation. In a similar manner to Figure 31, a transparent document overlay can be provided to permit a document to be traced into an electronic format. Figure 32 illustrates use of the position-sensing apparams as an electronic "whiteboard". In this application, the pattem-carrying member 14 is provided witii an opaque white surface to which the pattem 20 is applied. The pattem takes the form of infra-red sensible markings which can either be transparent to visible light (to show the white background member 14) or white themselves (to blend in with the white background member 14). To write on the white board composed of die member 14 and die applied pattem 20, the head of stylus 11 is provided with a marking element 33 (see inset in Figure 32) which is operative to deposit a marking substance on the white board. This marking substance is infra-red transparent but optically visible (in Figure 32 the letter "J" has been shown written up on the white board). The sensing head 16 of the stylus 11 is arranged to sense the infra-red pattem markings which are not obscured by writing on the white board. In tiiis manner, the position of the stylus over the white board can be sensed so that it becomes possible to build up an image of what has been written on the white board (for example, by an appropriately programmed work station 32). Figure 33 illustrates use of the position-sensing apparatus as a "flip-chart" . In this application, the pattem-carrying member 14 is marked with a pattem 20 which may be optically visible. A markable sheet 35 is then placed over the pattem 20. This sheet 35 provides at least a semi-opaque background upon which a person can write; however, the sheet 35 permits the sensing of the pattem 20 through it by a suitable sensing head 16 of the stylus 11. As with the Figure 32 embodiment, the stylus has a marking element which is operative to deposit a marking substance on the sheet 35. This marking substance has the characteristic that it permits a sensing of the pattem 20 through it whilst at the same time still being optically visible against the background of die sheet 35. An alternative implementation of the Figure 33 flip-chart would be to place the pattem 20 on the reverse of each sheet 15 ratiier than on the member 14. Variants Many variations of the above-described position-sensing apparams will be apparent to a person skilled in die art. For example, although the pattems and tiieir underlying arrays have been described in terms of a rectangular arrangement of cells, this is not the only possible cell arrangement. Two other possible partitionings are those based on triangular and hexagonal grids formed by dividing a surface into congment regular triangles and hexagons respectively. Both these grids have potential advantages in certain situations. In a triangular grid, each cell has only three neighbours (together with three other cells which it touches in a point). In a rectangular grid each cell has four neighbour cells and four cells which it touches in a point. Given an encoding scheme in which each cell transition must involve a colour change and in which each neighbour of a given cell must have a difference 'colour' ie. as illustrated in Figure 6, a triangular grid offers die potential to derive pattems with fewer colours. This could reduce the cost and complexity of the sensing head 16. - In a hexagonal grid, each cell has six neighbours (and no cells which it touches in only a point). In certain 'single pixel' sensing environments, the possibility of the sensing head moving directly from one cell to another cell which it touches only in a point cannot be ruled out. In these circumstances, the hexagonal grid again offers die possibility of encoding schemes with fewer colours (and/or shades of grey). By way of example, Figure 34 illustrates a portion of a hexagonal grid with a central hexagonal cell 350 and the six hexagonal cells 351 to 356 that surround it. A "horizontal" axis A p and a "vertical" axis B p are defined and die hexagonal cells n in rows parallel to tiiese axes. The cells are to be coloured to represent the element values of two binary sequences extending parallel to the axes A p , B p respectively; element values "i" and "j" for the horizontally-extending sequence and "k" and "1" for the vertically-extending sequence, are shown in Figure 34. For implementing a transitional encoding scheme, four encoding functions ho, h,, v 0 , v,, are defined in a manner similar to the rectangular pattem case described above in detail. If die central hexagonal cell 350 is coloured "c" then the colours of the surrounding cells are as given in Figure 34 where, for example, v k _1 (c) means the colour "y"which has the property that v k (y) = c. Note that a single function application is needed to determine d e colour of the cells adjacent cell 350 along the horizontal and vertical axes, but that a double function application is needed to determine the colour of the cells 356 and 353. These latter cells are effectively in the same relation to the cell 350 as diagonal cells in the rectangular pattem case. If the four encoding functions have the following form: ho(c) = c+ 1 (mod 9) v 0 (c) = c+3 (mod 9) v t (c) = c-3 (mod 9) then the other transitions from a cell, effectively along its diagonal are c+2, c-2, c+4, c-2. In fact, hexagonal cells are like square cells where it is only permissible to go on one diagonal (for example, diagonally up and left or down and right but not up and right or down and left). Thus, any encoding scheme that works for a rectangular grid (no separators) where diagonal movements are allowed, will also work for hexagonal grids. It will be appreciated that for a pattem based on a hexagonal arrangement of cells, a sub-pattem can be lined up with the pattem in six different orientations, rather than the four orientations possible for a rectangular pattem. Account must, of course, be taken of this when determining what orientation information needs to be provided. Where two orientable sequences are encoded in die hexagonal pattem as in the example given above, then the sub-pattem must be detected in one of the two orientations out of the possible six, and orientation information enabling this must be provided by any of the tiiree metiiods 200,201,203 described above with reference to Figure 5. As has already been noted, the physical parameter used to encode pattem features need not be optical/infra-red but could be surface roughness, magnetic permeability, or any one or more of a whole range of other possible physical characteristics. The means used to sense the pattem 20 need not be integral with the element used to point to a particular position on the pattem whose location is to be found. For example, a fixed (or pivotiy mounted) sensor could be used whilst d e pointing element could be a pair of cross wires (either real or constituted by an electronic image moved across an image of the pattem 20). It will be appreciated that the orientable and complement orientable binary sequences described above can also be used where linear position sensing is required rather than position sensing over an area. Appendices The following four Appendices are included as an integral part of this description: Appendix A - A method of constructing binary arrays with the windowing property Appendix B - Derivation of orientable and complement orientable sequences Appendix C - Finding the position of a sequence Appendix D - Position finding in a pseudo-random array flPPENQ l X fi A method of constructing binary arrays with the windowing property 1 Introduction We want to construct binary arrays with the property that each &ι x A 2 subarray appears a: most once in the array. It is easy to construct binary sequences of length 2* — 1 such, that every subsequence of length k appears at most once, and such sequences are called m- sequences. We shall use a pair of m-sequences to construct an array with the windowing property. It is of interest to be able to find the position of a subarray within the array, and we shall give a procedure for this. A harder problem is to do the same when the orientation of the array is unknown. We shall also give a method for constructing arrays where, given a k_ x -fc 2 subarray, it is possible to determine not only the position in the array, but also the orientation of the array. This construction will require a sequence in which each subsequence of length k appears at most once, and if such a sequence occurs, then its reversal does not. These sequences are called orientable m-sequences. 2 Construction Let s = (s_, s\, .. . . s~k. _ 2 ) and t = (-o, iι, ... . -.--- 2 ) ^ e hinary m-sequences. We construct a (2* 1 - 1) x 2* 1 ' 1 array as follows. The first column of the array is just the sequence s. To form the second and subsequent columns, we look at the sequence t. If to = 0, then the second column is just i again, while if Jo = 1» then the second column is s circularly shifted down by one place, that is {s 7 k. _ 2. s . • • • ,s 2 -._ _ 3 ). The remaining columns are constructed is a similar way: if f,_ι = 0, then the (i + l)th column is the tth column again, while if f,_ι = 1, then the (t + l)th column is the tth column circularly shifted down by one place. 3 Finding the position We now give a procedure for determining the position of a given &ι x jfe 2 subarray, as- suming that we have a method for finding the positions of subsequences of £ of length Ai, and of subsequences of t of length £ — 1. Suppose that our subarray has columns l-o.li. \ , ' - - , l 7 -i- T en «o is a subsequence of $. of length Ai, and so we can find its position r say. We now look at the other columns of our subarray, and determine their relative shifts. This is straightforward because, for each t, either u,- = u ;÷1 , in which case the shift is zero, or u Φ 3£»+ι > m which case the shift is one. We are thus able to construct a subsequence of t of length k_ — 1, and so we can find its position to, sa Then the horizontal position of our subarray is just XD. If we keep a table of cumulativ shifts (calculated by adding successive elements of t), we can look up the shift of the t-;t coiu n, and add it to r modulo 2^ — 1 to obtain the vertical position of our subarray. 4 Example Suppose that A t = A 2 = 3. We choose ι = (0,0, 1, 0, 1, 1, 1), and t = (0, 1, 1). Then th array is 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 Suppose that we want to find the position of the subarray 1 0 0 0 1 0 1 0 1 The first column is (1, 0, 1), which appears at position 2 in ι. The pattern of shifts (1, 1), which appears at position 1 in i. The table of cumulative shifts is (0, 0, 1,2), an so the vertical position of the subarray is 2 + 0 = 2. The position of the subarray is the (1/2), which may easily be checked to be correct. 5 Orientable arrays It is possible to construct orientable m-sequences . These will allow us to constru arrays in which it is possible not only to determine tne position of a subarray, but al to tell whether it is upside down or not. If we perform the construction described above with t an orientable m- sequence, then t orientation of the subsequence of £ tells as which way up the subarray is. Alternatively, £ js an orientable m-sequence, then the orientation of the first column as a subsequen of also gives us this information. It would also be useful to be able to tell if the subarray has been rotated through 90 In this case, the columns will no longer be subsequences of , so we cannot use the abo methods. This situation should be reasonably easy to identify, however, once A t a A 2 axe of reasonable size. This is because the chance of subsequent rows in the origin subarray all being either equal or shifted by one is extremely remote. APPENDIX B Derivation of Orientable and Complement-Orientable Sequences We shall express the task of finding orientable and complement-orientable sequences in terms of finding a path through a directed graph; this is standard practice in the area of deBruijn sequences. If we are looking for sequences with window length m, we construct a directed graph, usually called die deBruijn graph, whose vertices are labelled witii the sequences of length (m-1) and whose edges are labelled with the sequences of length m, as follows. An edge is drawn from a vertex labelled with (ao,a ι , , 2 ) to a different vertex labelled with (bo,^, ,b m ._) if and only if: If this condition is satisfied, then the edge is labelled with We see, therefore that a path tiirough d e graph can be thought of as a sequence where successive windows of the sequence correspond to the successive edge labels. All sequences of length m except the all zero and die all one sequence occur as edge labels. These do not occur because they would link a vertex to itself, which is not allowed. Orientable Sequences We can obtain a crude upper bound on die length of an orientable sequence of window length m. The total number of windows of length m is 2 m . If m is even, then the number of palindromes of length m is equal to 2 m/2 , whereas if m is odd, then the number of palindromes is 2 <m+1 /2 . The remainder of the windows may be grouped into pairs, each one with its reverse. The maximum length of an orientable sequence is then { 2 mA - 2 (m - 2)n + m - 1 if m is even. M = { { 2 m" ' - 2 (m - I)/2 + m - 1 if m is odd. It seems, however, that this upper bound is never attained. An orientable sequence can be tiiought of as a path through d e deBruijn graph which has the property that if an edge occurs in the path, then the edge with the reverse label does not occur. In particular, no edge with a palindrome label may occur. Our task involves finding Eulerian paths (that is paths which use each edge exactly once) in a directed graph. It is generally straightforward to find an Eulerian path in a graph and several algorithms exist (see, for example, Frank Harary. Graph Theory. Addison- Wesley, Reading, Mass., 1972.) A directed graph has a Eulerian path if it is connected, and each vertex (except possibly die start and end vertices) has the same number of edges coming into it as going out from it. This is indeed the case for die deBruijn graph. We know that we are not allowed to use edges with palindrome labels, so we must remove them. In order to preserve the Euler property, we must actually remove complete cycles containing palindromes. This is the first step, therefore, to construct and remove cycles containing palindromes. The second stage is to find a path through the remaining graph. A standard method is first to construct a spanning tree, mark all edges in this tree, and then trace a path backwards d rough the graph, always choosing an unmarked edge if possible. We can also construct orientable sequences of window length 2m + 1 recursively from orientable sequences of window length 2m, using the Lempel homomorphism. This maps binary sequences of length t to binary sequences of length t-1 and is defined by: (Xo. .x.-ι) → (Xo © Xι,....,x,.2 © x.-ι)- The inverse image of (y 0 , .... , y,.^ is the set { (UQ, .... , U t -i) , (v 0 , .... , v,.,) } where UQ = 0, v 0 = 1 and {u ; if y ; = 0 Ui + 1 = {_ and {Vi if y. = 0 (v ; if y ; = 1 If we have an orientable sequence of length M and window length 2m which starts with 2m - 1 zeros and ends with 2m - 1 ones, and look at its inverse image under the Lempel homomorphism, we obtain two sequences, one starting with 2m zeros and finishing with a string of 2m alternating zeros and ones, and the other equal to the complement of this. If we reverse the second sequence, and glue the two sequences together, amalgamating die string of alternating zeros and ones, to obtain a sequence of length 2M + 2 - 2m which is orientable with window length 2m+ 1. An example orientable sequence of window length 10 is given below: IQOQQQOOlQQOOlQlOOOlQOQQQlQlOQlQOOQαOlIOOOlOQQαilO αioαooαiiαo ioioααoαiiiαooiαoαiαoioαiQioioooo ioiα 00100110100100011010011000101001100111000010011100 01100111100000110101000101110000110110010010111001 01001011010100110101010001110101010100111101000011 11010101101100010110110111000111101100011111001000 11111101001101110100111001111011101011001110101111 QlllllQQl-.Qll-.110iail011111-.lQ01Q11011-.01I1001Q Q l-. QQ Complement-orientable Sequences In this case, we are able to construct maximal length sequences when the window length is odd, but are not able to do any better than in the orientable case if the window lengdi is even. If die window length m is odd, then a sequence of length m may be arranged in pairs by associating each sequence with the reverse of its complement, and any complement-orientable sequence may contain at most one of each pair as a subsequence.. The number of these pairs is clearly 2 ra ' 1 . A sequence of lengdi n contains n - m + 1 subsequences of length m, so if n is the length of a complement- orientable sequence with window length m, then we may deduce that: n - m + 1 < = 2 m'1 and so n < = 2 mΛ + m - 1. If we could construct a windowing sequence whose subsequences each contain more zeros than ones, then it would automatically be complement-orientable, since the reverse of the complement of any subsequence would have more ones tiian zeros, and so not be a subsequence itself. We shall do this by looking at a subgraph of the deBruijn graph. This subgraph consists of all vertices and edges whose labels have at most (m-l)/2 ones. Then any Eulerian path through this directed graph yields a maximal lengdi complement-orientable sequence. The following algorithm constructs a maximal length complement-orientable sequence. The successive windows of the sequence are given by w. o Set w = (w(0),w(l),...,w(m - 1)) to be (0,...,0). o If (w(l),...,w(m - 1) contains fewer than (m-l)/2 ones then - if we haven't already seen (w(l),...,w(m - 1), 1) then * set = (w(l),...,w(m - 1), 1) - else if we haven't already seen (w(l),...,w(m - 1),0) then * set w = (w(l),...,w(m - 1),0) - else * stop o else - else if we haven't already seen (w(l),...,w(m - 1),0) then * set w (w(l),...,w(m - 1),0) - else * stop. In other words, we add 1 to d e sequence whenever we can and add 0 otherwise. If the window length is even, then we could simply look at the subgraph of the deBruijn graph where each label has at most (m-2)/2 ones, which would guarantee complement-orientableness. This, however, does not yield long sequences, because of all the sequences with m/2 ones which are not complement-palindromes, but have been excluded from consideration by this method. fi PPENP\X C Finding the position of a sequence 1 Introduction 2 Notation Suppose that we have a linear feedback shift register with coefficients co, c l f c 2 , .. . ,e*_ι. Let C be the matrix Let the states of the shift register be , • • .- Ϊ --- 1 . and for each r, let 5 be the matrix obtained by writing each of ., . ,i. +fc _ 1 as a column and putting them together to form a A by A binary matrix. 3 GF{2 k ) The field GF(2 k ) consists of all polynomials of degree less than A with binary coefficients. So an element of CF{2 k ) looks like . αo + *ιc- -r • - • + βfc_ιct -f— where each of the o,- is equal to zero or one. Of course, they can be thought of as binary strings of length A. Addition is performed componentwise, so it looks like bitwise exclusive or. Multiplication is harder - elements are multiplied as polynomials in , and then higher powers of α are reduced using a primitive polynomial /(α) = co -f- CιCt + , + Ci-_ιQ fc - l + fc = Q. Let P be the k by k matrix with entries in GF{2 k ) then P has the property that P" l CP is diagonal. 4 The algorithm The algorithm is in two parts: the first reduces the problem to that of discrete logarithms in GF(2 k ), and the second calculates the discrete logarithm. Both parts of the algorithm consist of a precomputation phase and a phase which must be done each time. There are several different ways of calculating discrete logs, and it is not clear which would be the best in this case. The Coppersmith algorithm is efficient for large fields, but is fairly complicated, and involves factorising polynomials. The Pohlig- Silver- Hellman algorithm is much simpler, and it is described below. 4.1 First part 4.1.1 Precomputation So and its inverse must be calculated. S is calculated by running the shift register until the first k states are obtained. It is a binary k by k matrix, so finding the inverse should be straightforward. 4.1.2 Remainder of computation From the current state 3,, the matrix S r must be calculated by. running the shift register until the next (k - 1) states are obtained. This matrix must be multiplied by the matrix S Q 1 to obtain X = S T S Q 1 . These are both k by Jfe binary matrices. The next item to be calculated is 2, the element in the first row and first column of P~ X XP. In order to do this, the first column of XP must be calculated. Now X is a binary k by k matrix, and P is a k by k matrix with entries in GF(2 k ). so this should take at most k 2 additions in GF{2 k ). To calculate x then requires k multiplications and k additions in GF{2 k ). This element z is now given to the second part of the algorithm. 4.2 Second part (due to Pohlϊg, Silver and Hell-man) For ease of notation, write Q for 2 k — 1. Q can be written as the product of its prime factors Q = TL*r The aim of this part of the algorithm is to find r such that x = a 4.2.1 Precomputation For each of the p,-, a table of p,-th roots of unity must be calculated. This consists of the elements a*^ for 4 = 0, 1, ... , (_£>, • - 1). 4.2.2 Remainder of computation The idea here is to compute r modulo each of the p ' in turn, and then use the Chinese Remainder Theorem to combine the results to obtain r. There is a way of decreasing the number of comparisons needed to look y up in the tables, at the expense of performing more multiplications, but it is probably not sensible for the size of fields here. The result of the above calculations is a set of numbers in, say, such that r s u,- (mod p^ ' ) for each i. It is now simply a matter of applying the Chinese Remainder Theorem to obtain the value of r. Let Mi — -τ-r, and let -Y t - be such that Af.-Y; ≡ 1 p.- (mod p '). These can of course all be precomputed. Then r = ∑ v-_MiNi (mod Q). APPeNO.X D Position finding in a pseudo- random array 1 Introduction This ty e**-.* describes a generalisation to two dimensions of the position finding eompu -Jnα. jor -.c-fu-o e. d(---c-ibe-l » fl fpendύ C . 2 Notation Given a pseudorando array A of size τiχ = 2^ - 1 by ^ = {2 k k — l)/τiι, there exist a pair of recurrences which generate A, one for moving vertically, and one for moving horizontally. If we write a k]_ by k 2 subarray of A as a vector of length kιk by writing each of the columns out in turn so that β i+fci -I +l • • • is written as Then each of the two recurrences can be written as a kχk 2 by k k 2 matrix which acts on these vectors. Let the matrix for the vertical recurrence be C and the one for the horizontal recurrence be D. Since the columns are copies of a pseudorandom sequence, C in fact consists of Jt 2 copies of a kι by k matrix Co arranged along the diagonal: Now if we denote by _. 4 the vector corresponding to the subarray with top left hand corner at (r, t), we have 2+4 — CD -∑O,0- 3 The algorithm We find a matrix P such that P~ l DP is diagonal, and then P~ X CP is also diagonal. So is also diagonal. Playing the same game as in the one-dimensional case, we may obtain L D 1 from &. >{ and 2Q I0 by constructing matrices 5o,o and S r ,f In the one-dimensional case, we simply moved along the sequence to construct these matrices; in the two dimensional case, we may of course move vertically, horizontally, or a combination of the two, provided that the resulting matrices are non-singular. We may then diagonalize C"!?' using the precomputed matrix P, and look at the first eigenvalue. If the first eigenvalue of C is a, and the first eigenvalue of D is β, then the first eigenvalue z of C r D t is equal to α r 3*. We know that C* 1 = D n = I, the identity matrix. II τ»ι and RJ are coprime, then we can calculate x" 1 = β tn and z n = α* 1 *, and perform discrete logarithm calculations on these two elements in the appropriate fields to find 4 and r respectively. 4 Example We shall use the 3 x 5 pseudo-random array from [1]. This array is 0 1 1 1 1 0 0 1 1 0 0 1 0 0. 1 The matrices for moving in the horizontal and vertical directions respectively are as follows. nd We first calculate P such that P~ l DP is diagonal. The eigenvalues of D satisfy the equation x 4 + x 3 + r 2 + x + 1 = 0. If we denote one of the roots of this equation ' by 0, then the other roots are β 2 , 0 3 and 0* = β 2 + β 2 + ? + 1. The matrix ? is then equal to and from this, we calculate P~ - l ι to be We now calculate P~ l CP, and may check that it is indeed diagonal. Hence we see that a, the first eigenvalue of C, is equal to 0 2 + 0 3 . Suppose that the initial state of the pseudo-random array is the vector (0010), and that the state whose position we are trying to find is (1001). We must now construct the matrices SQJ O and S r - In this small case, we must in fact move horizontally, because moving vertically gives us a singular matrix. This is because we need a 4 x 4 array, but we have only three rows in our pseudo-random array. Moving horizontally, however, does indeed give us non-singular matrices. ( 0 1 1 1 0 0 1 1 5o,o = 1 1 1 1 0 1 1 0 J and o we have The first column of -X is therefore which means that the first element x of P~ l XP is equal to β*{β + 1) + (β + β 2 )(0 3 + 0 + 1) + l.(β 2 + 0) + (0 2 + ){0 z + 1) = 1 + 0. We must therefore find r and t such that τ 0 % = x = 1 + β. Note that in this small example, both the fields in which we are computing discrete logarithms have prime order, and so we shall not be able to use the Silver-Pohllg-Hellman algorithm. Since the fields are so small, however, we can simply calculate the logarithms directly. In a larger case, however, the S-lver-Pohiig-Hel-man algorithm would be used. We first compute y =. x 3 to obtain t. Now x 3 = (1 + β) 3 = 1 + β + β 2 + β 3 = ?" ♦ , so w deduce that 3f ≡ 4 (mod 5), or that - = 3. Similarly, we compute z = a 5 = (1 + β*) = 1 + β 2 + β 3 = 1 + α = a 2 , and so 5r -s 2 (mod 3), or r -= I. We have therefore foun the position of the vector (1001) to be (3, 1), which may be checked by reference to th array. References [1] F. J. MacWilliams and N. J. A. Sloane. Pseudo-Random Sequences and Arrays Pmceedings of the IEEE, 64 No. 12:1715-1728, 1976.

Claims: CLAIMS 1. Position-sensing apparatus comprising: a pattem element with an arrangement of indicia that together present a two-dimensional pattem having features that make said pattem a windowing pattem in that any local portion of the pattem of given extent in terms of its features (herein a "sub-pattem"), when considered in isolation, is so characterized by said features as to permit the location of the sub-pattem to be determined, for at least one orientation of the sub-pattem relative to said pattem; an indicator element movable relative to said pattem element across said arrangement of indicia; sub-pattem detector means including sensor means for sensing said indicia in the locality of said indicator element, the detector means being operative to process the output of the sensor means to derive sub-pattem data representative of a sub-patte local to said indicator element in a said at least one orientation of the sub-patte relative to said pattem; and position-determining means including a memory holding pattem data representative of said windowing pattem, the position-determining means being responsive to the sub-pattem data derived by said detector means to determine, by reference to said pattem data, the position of said indicator element relative to said pattem element. 2. Position-sensing apparatus according to Claim 1, wherein: (a) said features of the pattem discemibly form a regular arrangement for which when any given sub-pattem of said pattem is considered in isolation from the pattem, that sub-pattem may be in any of M possible orientations relative to the pattem where M is a positive integer greater than zero; (b) said windowing pattem is such that any given sub-pattem can be correctly located in the pattem for N of said M possible orientations where N is a positive integer in the range 0<N<M; and (c) said sub-pattem detector means is responsive to the said regular arrangement of features to identify a said sub-pattem in the locality of said indicator element, and to provide sub-pattem data to said position- determining means which is representative of the said sub-patte in one of said N of said M possible orientations relative to the pattem in which it can be correctly located. 3. Position-sensing apparatus according to Claim 2 wherein said features are discemibly arranged in rows and columns extending parallel to respective first and second coordinate axes with each feature being presented in a notional cell that has line contact with a plurality of neighbouring such cells. 4. Position-sensing apparatus according to Claim 3, wherein each said cell has line contact wtih four neighbouring cells, M has a value 4, and N has one of the values 1,2 and 4. 5. Position-sensing apparatus according to Claim 3 or Claim 4, wherein said features serve to encode at least part of a two-dimensional windowing array having rows and columns of elements notionally extending parallel to said first and second coordinate axes respectively. 6. Position-sensing apparatus according to Claim 5 , wherein said array is a pseudo- random binary array. 7. Position-sensing apparatus according to Claims 5, wherein said array is formed from first and second binary sequences of length m and n respectively, where m and n are positive integers greater than zero, by forming a first column of the array from said first sequence, and forming each subsequent (i)th column, where "i" is an integer in the range from 2 to 2 n+ \ by considering the value of the (i-l)th element of the second sequence, and if the (i-l)th element has a first binary value, forming the said (i)th column from said first sequence unshifted relative to the (i-l)th column, - if the (i-l)th element has a second binary value, forming the said (i)th column from said first sequence circularly shifted by one position relative to the (i-l)th column. 8. Position-sensing apparatus according to Claim 7, wherein said first and second binary sequences are constituted by respective orientable binary sequences each with the property that if a window-length subsequence appears in the sequence, its reversal does not. 9. Position-sensing apparatus according to Claim 5, wherein said array is formed by combining together two windowing sequences that extend parallel to respective ones of said first and second coordinate axes, each element of said array representing a particular combination of values of corresponding elements of said sequences. 10. Position-sensing apparatus according to Claim 9, wherein said sequences are selected from the group of sequences comprising: (a) de Bmijn sequences; (b) pseudo-random binary sequences; (c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and (d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not. 11. Position-sensing apparatus according to any one of Claims 5 to 10, wherein the value of each element of said array is encoded as a corresponding feature value. 12. Position-sensing apparatus according to Claim 3 or Claim 4, wherein said features serve to encode a first windowing sequence of elements notionally extending parallel to said first coordinate axis and a second windowing sequence of elements notionally extending parallel to said second coordinate axis. 13. Position-sensing apparatus according to Claim 12, wherein said sequences are selected from the group of sequences comprising: (a) de Bmijn sequences; (b) pseudo-random binary sequences; (c) orientable binary sequences each having the property that if a window- length subsequence appears in the sequence, then its reversal does not; and (d) complement-orientable binary sequences each having the property that if a window-length subsequence appears in the sequence, then the reverse of the bitwise complement of the subsequence does not. 14. Position sensing apparatus according to Claim 12 or Claim 13, wherein the value of each element of each said sequence is encoded as a corresponding change in feature value when moving between neighbouring cells in a direction parallel to the direction of extent of the corresponding said sequence. 15. Position-sensing apparatus according to Claim 14, wherein the encoding of said element values is such as to ensure that each said feature is distinguished by its value from at least one specific neighbour with which it has line contact. 16. Position-sensing apparatus according to Claim 15, wherein said encoding is such as to distinguish each feature by value from all its neighbours with which it makes line contact. 17. Position-sensing apparatus according to Claim 16, wherein the encoding of said element values is such as to ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact. 18. Position-sensing apparatus according to Claim 11, Claim 14, or Claim 15, wherein each said feature is separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattem detector means. 19. Position-sensing apparatus according to Claim 1 , wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattem at least as great as a said sub-pattem. 20. Position-sensing apparatus according to Claim 1 , wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattem which is smaller in extent than a said sub-pattem but which includes a plurality of features, said sub-pattem detector means being operative to build up said sub-pattem data relating to a whole sub-pattem as the sensor means is moved over the pattem by taking account of the continuity of features sensed during said movement. 21. Position-sensing apparatus according to Claim 5 or Claim 11, wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattem corresponding to a single said feature, said apparatus including spatial- information means for providing said sub-pattem detector means with spatial information regarding the relative disposition of adjacent element-value encoding features, and said sub-pattem detector means being operative to use said spatial information to build up said sub-pattem data relating to a whole sub-pattem as the sensor means is moved over the pattem. 22. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises features of said pattem sensible by said sensor means as it is moved between said element- value encoding features. 23. Position-sensing apparatus according to Claim 22, wherein said spatial- information is encoded into the values represented by said element-value encoding features. 24. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises means, separate from said sensor means, deriving information regarding movement of said sensor including at least information on changes in direction of said sensor means. 25. Position-sensing apparatus according to Claim 21, wherein the spatial information provided to said sub-pattem detector means is only partial and said detector means is operative to assume an unchanging direction of movement of said sensor means across said pattem unless and until, following initial position determination, an inconsistency is determined between said pattem data and sub-pattem data. . 26. Position-sensing apparatus according to Claim 1 , wherein the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, is fixed thereby facilitating derivation by said sub-pattem detector means of said sub-pattem data representative of a sub-pattem orientated in a said at least one orientation. 27. Position-sensing apparatus according to Claim 5 or Claim 11, wherein the relative orientation of the sensor means to said arrangement of indicia, about an axis orthogonal to said arrangement, is variable; said apparatus including orientation- information means for providing said sub-pattem detector means with orientation information about said relative orientation, the sub-pattem detector means utilizing this information in deriving said sub-pattem data representative of a sub-pattem orientated in a said at least one orientation. 28. Position-sensing apparatus according to Claim 27, wherein said orientation- information means comprises features of said pattem sensible by said sensor means as it is moved between said element- value encoding features. 29. Position-sensing apparatus according to Claim 28, wherein said orientation information is encoded into the values represented by said element-value encoding features. 30. Position-sensing apparatus according to Claim 1, wherein said position- determining means determines the location of said sub-pattem in the pattem by comparing features of the sub-pattem with features of the pattem. 31. Position-sensing apparatus according to Claim 1 , wherein said position- determining means determines the location of said sub-pattem in the pattem by using an index addressable in terms of data contained in said sub-patte data with each addressable index entry holding sub-pattem location data corresponding to the pattem position of the sub-pattem giving rise to addressing of that index entry. 32. Position-sensing apparatus according to Claim 1, wherein said position- determining means determines the location of said sub-pattem in the pattem by calculation. 33. Position-sensing apparatus according to any one of the preceding claims, wherein following an initial determination of the location of said indicator element, any incremental change in the pattem portion sensed by said sensing means, is used by said position-determining means to provide an updated location based on the incremental change in location of the indicator element indicated by said change in the sensed pattem portion. 34. Position-sensing apparatus according to claim 33, wherein said pattem is an encoding of two windowing sequences of elements notionally extending along respective first and second coordinate axes, said position-determining means being operative to update the location of said indicator element along said first and second coordinate axes separately, based on any incremental change in location .along the corresponding coordinate axis indicated by a change in the element or elements of the corresponding sequence represented by said sensed pattem portion; said position- determining means in incrementing the location of said indicator element along at least 5 one said coordinate axis, assuming an unchanged direction of movement therealong unless and until the said element or elements of the sequence extending along said one coordinate axis that are represented by said sensed pattem portion, differ from that predicted from the stored pattem data relating to that sequence having regard to the current location in the sequence as previously determined by said position-determining 0 means, said position-determining means upon detecting a difference between the sensed and predicted sequence elements, being further operative to enter a recovery process to recover its location along said one coordinate axis, said recovery process involving deriving at least one candidate location for the indicator element on the basis that the direction of movement of the indicator element has been reversed, and directly or 5 indirectly comparing the element or elements sensed along the track of the indicator element with those predicted to lie along the indicator-element track in reaching the or each said candidate location whereby to test the validity of the or each such location. 35. Position-sensing apparatus according to claim 34, wherein the apparatus is o operative to store the identity of the sequence elements sensed along the track of the indicator element, the validity of the or each said candidate location being tested during the recovery process by predicting, on the basis that a reversal of movement occurred at a location midway between the candidate location and the currently-determined one, the sequence element or elements sensible during movement between said midway and 5 candidate locations, comparing them with the corresponding stored sensed sequence elements, and rejecting the candidate location if this comparison results in a mismatch. 36. Position-sensing apparatus to Claim 34, wherein said recovery process involves testing the validity of the or each candidate location by: 0 (i) predicting the sequence element or elements sensible thereat, comparing them with the sequence element or elements predicted for the currently- determined, but incorrect, location and rejecting the candidate location if this comparison results in a match, and/or (ii) on the assumption that a reversal of movement occurred at a location midway between said candidate location and the currently determined location, predicting the sequence element or elements sensible during movement between said midway and candidate locations, but not including the latter location, comparing them with the corresponding sequence elements predicted for movement to the currently-determined, but incorrect location and rejecting the candidate location if this comparison results in a mismatch. 37. Position-sensing apparatus according to Claims 34, 35 or 36, wherein a plurality of candidate locations are derived and remain unrejected following the testing of their validity, said recovery process further involving detecting further incremental changes in said sensed sequence elements and comparing each new incrementally-changed sensed sequence element or elements with predictions based in each remaining candidate location, a said remaining candidate location being rejected where this comparison results in a mismatch. 38. Position-sensing apparatus according to any one of the preceding claims, wherein said indicator element is a hand-holdable stylus carrying said sensor means. 39. Position-sensing apparatus according to any one of the preceding claims, wherein said pattem element is a planar member carrying said indicia, both the planar member and said indicia being transparent to visible light whereby to permit viewing of items through the pattem element. 40. Position-sensing apparatus according to Claim 38, wherein said pattem element is a planar member carrying said indicia, said indicia being transparent to visible light and said stylus being a marking stylus capable of depositing a marking substance on a surface of said planar member at which said indicia can be sensed by said sensor means, said working substance being optically visible but permitting the sensing of said indicia therethrough. 41. Position-sensing apparatus according to Claim 38, wherein said pattem element 5 is a planar member carrying said indicia, said apparatus further comprising a markable sheet positioned over said planar member, said sheet being at least partially opaque and permitting said indicia to be sensed therethrough by said sensor means, and said stylus being a marking stylus capable of depositing a marking substance on said sheet which substance is optically discernible against said sheet but permits the sensing of said 0 indicia therethrough. 42. A pattem element for use in position-sensing apparatus according to any one of the preceding claims and having the characteristics of the said pattem element thereof. 5 43. A pattem element presenting a two-dimensional pattem having pattem cells arranged in rows and columns extending parallel to respective first and- second coordinate axes with each cell having a plurality of neighbouring cells across respective boundaries and having a property set at one of a plurality of possible values, said cells serving to encode first and second binary sequences of elements parallel to said first o and second axes respectively with each sequence element having its value encoded as a corresponding change in cell property value when moving across a said boundary, said change being in accordance with the following four encoding functions that give the property value of a said cell when moving thereto from another said cell having a property value c: 5 h 0 (c), h ! - for movement parallel to said first axis v o( c ) > v ι( c ) " f° r movement parallel to said second axis where the suffixes "0" and "1" indicate the element value to be encoded, said encoding being such that: ho(c) ≠ h,(c) and v 0 (c) ≠ v,(c) 0 hityCc)) = v 3 (h,(c)) where "i" and "j" are members of the binary value set (0,1), each said cell being distinguishable from its neighbours and movements parallel to said first and second axes being respectively identifiable. 44. A pattem element according to claim 43, wherein each said cell is 5 distinguishable from its neighbours and movements parallel to said first and second axes are respectively identifiable, by virtue of said encoding functions being so chosen that any given cell and all its neighbouring cells in both directions of said first and second axes have different values of the property c. 0 45. A pattem element according to claim 43, wherein each said cell is distinguishable from its neighbours and movements parallel to said first and second axes are respectively identifiable, by virtue of said encoding functions being so chosen that any given cell and its neighbouring cells in both directions of one of said first and second axes have different values of the property c, and further by virtue of the 5 provision of identifiable separators between neighbouring cells in both directions of the other of said first and second axes. 46. A pattem element according to claim 43, wherein each said cell is distinguishable from its neighbours and movements parallel to said first and second o axes are respectively identifiable, by virtue of the provision of identifiable separators between neighbouring cells in both directions of both said first and second axes with the separators relevant to movement in both directions of one said axis being distinguished from the separators relevant to movement in both directions of the other said axis. 5 47. A pattem element according to any one of claims 43 to 46, wherein said encoding functions are such that any given cell and all the cells to which it is diagonally adjacent have the value of their property c so inter-related as to enable at least the fact that a diagonal transition has been made when moing from said given cell 0 to one of its diagonally adjacent cells. 48. A pattern element according to any one of claims 43 to 47, wherein said encoding functions are of the form: ho(c) = c -I- a (Modulo N) h,(c) = c - a (Modulo N) v 0 (c) = c + b (Modulo N) v,(c) = c - b (Modulo N) where a is not equal to b. 49. A pattem element according to any one of claims 43 to 47, wherein said encoding functions are of the form: ho(c) = c.XOR.a h t (c) = c.XOR.b v 0 (c) = c.XOR.d v^c) = c.XOR.e where XOR represents the bitwise exclusive OR function; a,b,d,e are non zero; a and " b are different and d and e are different. 50. A pattem element according to any one of claims 43 to 49, wherein said sequences are windowing sequences. 51. A pattem element according to claim 50, wherein said sequences are orientable sequences, and wherein: ho(c) = o 'icyMc) = hf l (c) 52. A pattem element according to claim 50, wherein said sequences are compliment-orientable sequences, and wherein: ho = hf^c) o = V(c) 53. Displacement-sensing apparatus comprising a pattem element according to any one of claims 43 to 49, a member movable over said element, sensing means coupled to said member for sensing at one time the value of the property c of a single cell of said pattem or where provided, the identity of a said separator, and processor means responsive to the output of said sensor means to determine the relative displacement of said member across the pattem element. 54. A method of determining the location of an indicator along a predetermined sequence of pattem features relative to which the indicator is movable, said method involving determining an initial location for said indicator along said sequence and thereafter incrementally updating the determined location by: A. sensing a portion of said sequence of pattem features in the locality of said indicator and monitoring the sensed sequence portion to detect an incremental change therein. B. upon detecting an incremental change in said sensed portion, comparing the sensed sequence portion with that predicted as present in said locality, this prediction using a stored representation of said predetermined sequence and being effected on the basis of an incremental change having occurred in the currently determined location in an assumed direction of movement, and C. acting on the result of said comparison as follows: (i) where said comparison produces a match between the sensed and predicted sequence portions, updating the determined location of the indicator by an incremental change in said assumed direction of movement, (ii) where said comparison produces a mismatch between the sensed and predicted sequence portions, carrying out a recovery process to recover the location of the indicator along said sequence, said recovery process involving deriving at least one candidate location for the indicator on the basis that the direction of movement of the indicator has been reversed, and directly or indirectly comparing the sequence portions sensed along the track of the indicator with those predicted to lie along the indicator' s track in reaching the or each said candidate location whereby to test the validity of the or each such location. 55. A method according to Claim 54, including the step of storing the sequence portions sensed along the track of the indicator, the validity of the or each said candidate location being tested during the recovery process by predicting, on the basis that a reversal of movement occurred at a location midway between the candidate location and the currently-determined one, the sequence portions sensible during movement between said midway and candidate locations, comparing them with the corresponding stored sequence portions, and rejecting the candidate location if this comparison results in a mismatch. 56. A method according to Claim 54, wherein said recovery process involves testing the validity of the candidate location by: (i) predicting the sequence portion sensible thereat, comparing it with the said sequence portion predicted for the currently-determined location, and rejecting the candidate location if this comparison results in a match, and/or (ii) on the assumption that a reversal of movement occurred at a location midway between said candidate location and the currently- determined location, predicting the sequence portions sensible during movement between said midway and candidate locations, but not including the latter location, comparing them with the corresponding sequence portions predicted for movement to the currently-determined location, and rejecting the candidate location if this comparison results in a mismatch. 57. A method according to Claims 54, 55 or 56 wherein a plurality of candidate locations are derived and remain unrejected following the testing of their validity, said recovery process further involving detecting further incremental changes in said sensed sequence portion and comparing each new incrementally-changed sensed sequence portion with predictions based on each remaining candidate location, a said remaimng candidate location being rejected where this comparison results in a mismatch. AMENDED CLAIMS [received by the International Bureau on 4 September 1992 (04.09.92); original claim 19 cancelled; original claim 1 amended; other claims unchanged (2 pages)] 1. Position-sensing apparatus comprising: a pattern element with an arrangement of indicia that together present a two-dimensional pattem having features that make said pattem a windowing pattem in that any local portion of the pattem of given extent in terms of its features (herein a "sub-pattern"), when considered in isolation, is so characterized by said features as to permit the location of the sub-patte to be determined, for at least one orientation of the sub-patte relative to said pattem; an indicator element movable relative to said pattem element across said arrangement of indicia; sub-patte detector means including sensor means for sensing said indicia such that for any one position of the indicator element, the sensing means is operative to sense a portion of said pattem which lies in the locality of said indicator element and is smaller in extent than a said sub-pattem, the detector means being operative to process the output of the sensor means such that as the indicator element is moved over the pattem, the detector means is operative to derive sub-pattern data representative of a whole sub-pattem local to said indicator element in a said at least one orientation of the sub-patte relative to said pattem; and - position-determining means including a memory holding pattem data representative of said windowing pattem, the position-determining means being responsive to the sub-pattern data derived by said detector means to determine, by reference to said pattern data, the position of said indicator element relative to said pattem element. 2. Position-sensing apparatus according to Claim 1, wherein: (a) said features of the pattem discemibly form a regular arrangement for which when any given sub-pattem of said pattem is considered in isolation from the pattern, that sub-pattem may be in any of M possible orientations relative to the pattern where M is a positive integer greater than zero; (b) said windowing pattem is such that any given sub-pattem can be element values is such as to ensure that each said feature is also distinguished by its value from its neighbours with which it has point contact. 18. Position-sensing apparatus according to Claim 11, Claim 14, or Claim 15, wherein each said feature is separated from at least one neighbouring feature with which it has line contact by a corresponding separator zone that is detectable as such by said sub-pattem detector means. rf fruition sensing apparatus according to Claim 1, wherein-said sensor means is movable with said indicator elemenT -fld i-> opβ-ativ-s-lo sense a portion of said pattem at least αα great as a oaid sub pattern 20. Position-sensing apparatus according to Claim 1 , wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattem which is smaller in extent than a said sub-pattem but which includes a plurality of features, said sub-pattem detector means being operative to build up said sub-pattem data relating to a whole sub-pattem as the sensor means is moved over the pattern by taking account of the continuity of features sensed during said movement. 21. Position-sensing apparatus according to Claim 5 or Claim 11, wherein said sensor means is movable with said indicator element and is operative to sense a portion of said pattem corresponding to a single said feature, said apparatus including spatial- information means for providing said sub-pattem detector means with spatial information regarding the relative disposition of adjacent element-value encoding features, and said sub-patte detector means being operative to use said spatial information to build up said sub-pattem data relating to a whole sub-pattem as the sensor means is moved over the pattem. 22. Position-sensing apparatus according to Claim 21, wherein said spatial- information means comprises features of said pattem sensible by said sensor means as it is moved between said element- value encoding features. STATEMENT UNDER ARTICLE 19 Claim 1 has been restricted to embodiments in which less than a full windowing sub-pattern is sensed by the sensing means of the sub-pattern detector means and in which, accordingly, the detector means is required to build up a whole sub-pattern before absolute position detection can be effected. In contrast, both EP A 0171,284 (NEC Corporation) and EP A 0260,246 (Joyce S.A) rely on the detection of a complete windowing sub-pattern and contain no disclosure as to how a whole sub-pattern may be built up from smaller pattern fragments.

Inventors: BURNS JOHN, LLOYD SHEELAGH ANNE, BURNS, JOHN, LLOYD, SHEELAGH, ANNE
Applicants: HEWLETT PACKARD CO, HEWLETT PACKARD COMPANY
Application year: 1992
Main classification: G06K11
IPC codes: G06F3, G06F7