A linear interpolation operator for determining the value y of a function of x when one knows the value y1 corresponding to x1, and a value y2 corresponding to x2 (where x2<x≧x1), comprises a first calculation circuit which determines the equation (xm+xM)/2; a second calculation which determines the equation (ym+yM)/2; a comparison circuit which compares x with (xm+xM)/2 so as to determine which one of the intervals [xm,(xm+xM)2], [(xm+xM)/2, xM] contains x and to feed back the limits of the selected interval into the first calculation circuit and the limits of the interval corresponding in y into the second calculation circuit.
|
0. 6. A circuit for performing linear interpolation, given first and second x values and corresponding first and second y values, to generate a y value corresponding to an intermediate x value between the first and second x values, comprising:
first and second x-input registers, which initially contain the first and second x values; first and second y-input registers, which initially contain the first and second y values; a first circuit for calculating a midpoint between the values in the first and second x-input registers; a second circuit for calculating a midpoint between the values in the first and second y-input registers; a comparator circuit for comparing the intermediate x value with the calculated midpoint between the values in the first and second x-input registers; a gating circuit for loading the calculated x and y midpoints into the first x-input register and the first y-input register, respectively, if the intermediate x value is greater than the calculated midpoint between the first and second x-input registers, and for loading the calculated x and y midpoints into the second x-input register and the second y-input register, respectively, if the intermediate x value is less than the calculated midpoint between the first and second x-input registers, in order to begin a following calculation cycle; and output means, coupled to the second circuit for calculating a midpoint, for providing an output y value after a predetermined criteria has been satisfied.
1. A linear interpolation operator apparatus for determining a value of y, wherein y is a function of x, x is in a range between a known lower value x1 and a known higher value x2, and known values y1 and y2 correspond respectively to x1 and x2, comprising:
first calculation means for determining (xm+xM)/2, wherein the initial value of a lower range limit xm=x1 and the initial value of an upper range limit xM=x2; said first calculation means comprising input registers, an adder and a divider by two; second calculation means for determining (ym+yM)/2, wherein the initial value of a lower range limit ym=y1 and the initial value of an upper range limit yM=y2; said second calculation means comprising input registers, an adder and a divider by two; input means for inputting x; comparing means for comparing x with (xm+xM)/2, said comparing means comprising a comparator including a first input terminal coupled to said divider by two of said first calculation means, a second input terminal coupled to said input means and an output; feedback means responsive to the output of said comparator for transmitting the output of said divider by two of each of said first and second calculation means to a respective input register to reset corresponding upper or lower range limits, said feedback means comprising controlling gates for transmitting said output of said divider by two as a function of the comparator output; and output means coupled to said divider by two of said second calculation means for providing the value y after a predetermined number of cycles.
2. A linear interpolation operator apparatus according to
3. A linear interpolation operator apparatus according to
4. A linear interpolation operator apparatus according to claims 1 to barycentric calculations, wherein the value y=(aA+bB)/(A+B) is to be calculated, wherein the values of the parameters are chosen as follows:
5. A linear interpolation operator apparatus according to any of claims 1, 2 and 3 to the calculation of the product of two numbers A and B divided by a third number C (y=A*B/C), wherein the values of the parameters are chosen as follows:
0. 7. The circuit of
0. 8. The circuit of
9. The circuit of
10. The circuit of
a first summer for summing the values contained in the first and second x-input registers; and a divide-by-
and wherein the second circuit for calculating a midpoint comprises: a second summer for summing the values contained in the first and second y-input registers; and a divide-by-
11. The circuit of
12. The circuit of
|
As shown in
In block 102, it is determined whether (xm+xM)/2 is higher than x. If the answer is NO, the block 103 is selected and it is considered that the new value of xm is (xm+xM)/2, that the value of xM remains unchanged, that the new value of ym is (ym+yM)/2 and that yM remains unchanged. If the answer is YES, the block 104 is selected where it is determined that xm remains unchanged, that the new value of xM is (xm+xM)/2, that ym remains unchanged and that the new value of yM is (ym+yM)/2.
In block 105, it is determined whether the difference between the new value of yM and the new value of ym is lower than a predetermined threshold ε. If the answer is NO, the block 101 is selected again and the cycle is repeated. If the answer is YES, a result y=(ym+yM)/2) is supplied to the block 106 and the calculation is completed at the end block 107.
The method corresponding to the flow chart of
The algorithmic operator shown in
This end of cycle can be determined by the systematic choice of a predetermined number of cycles, by a comparison between the values yM and ym, or by a comparison between one and/or the other of the values xm and xM with respect to a value x.
It will be noted that the only calculations carried out by the operator shown in
All the following stages (2 to N) are identical to the first one and the value y to be calculated is obtained at the output of the last stage.
As in the preceding case, this circuit is provided with clock means for its synchronization.
It will be noted that, instead of providing a pipeline operator with intermediate registers, it is possible to provide an asynchronous operator but, in this case, it would be compulsory to wait, each time, for the results of the calculations of the N stages before carrying out a new operation.
Of course, the operators illustrated in
The invention is particularly advantageous with respect to the prior art systems when it is necessary to simultaneously interpolate several variables as a function of the variation of a same parameter. This is especially the case for tridimensional graphic applications wherein one tries to interpolate a dimension z at the same time as the dimension y and/or in the case of multicolor images, for example, for interpolating simultaneously the space coordinates y and z and three color parameters: R (red), Y (yellow) and B (blue). To achieve this purpose, one will add to the features of
On the other hand, as hereinabove mentioned, such operators permit, owing to an adequate selection of the input values, to carry out calculations other than linear interpolation calculations, for example barycentric calculations or quotients of two products. It is moreover apparent that, if it is possible to carry out the operation A*B/C, it is also possible to carry out the operations A/C, A/B and 1/C. It does not seem to be appreciably advantageous to use an operator according to the instant invention for carrying out such operations but it is a positive quality of this operator to offer a high flexibility and to permit to carry out various types of calculations.
For a barycenter calculation, that is, y=(aA+bB)(A+B), the following values will be chosen as input parameter values:
Then, one effectively obtains by using the formula (1):
For the calculation of a product composed of two numbers (A and B) followed by a division by a third number (C), the following values will be chosen as input parameter values:
Then, one effectively obtains by using the formula (1):
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
3789203, | |||
3943343, | Jul 09 1973 | Kawasaki Heavy Industries, Ltd. | Program control system for manipulator |
4001565, | Jun 25 1974 | Nippon Soken, Inc. | Digital interpolator |
RE30132, | Jul 09 1973 | Unimation, Inc. | Program control system for manipulator |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 17 1994 | STMicroelectronics S.A. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Feb 10 2007 | 4 years fee payment window open |
Aug 10 2007 | 6 months grace period start (w surcharge) |
Feb 10 2008 | patent expiry (for year 4) |
Feb 10 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 10 2011 | 8 years fee payment window open |
Aug 10 2011 | 6 months grace period start (w surcharge) |
Feb 10 2012 | patent expiry (for year 8) |
Feb 10 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 10 2015 | 12 years fee payment window open |
Aug 10 2015 | 6 months grace period start (w surcharge) |
Feb 10 2016 | patent expiry (for year 12) |
Feb 10 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |