#121 closed defect (fixed)
Cell/Chip/FPA transforms
| Reported by: | Owned by: | Paul Price | |
|---|---|---|---|
| Priority: | high | Milestone: | |
| Component: | IPP SDRS | Version: | unspecified |
| Severity: | normal | Keywords: | |
| Cc: |
Description
Assume I had a pointer of type psFPA, and I had an X,Y coordinate in that FPA
and I wanted to figure out which chip it corresponded to. There are no
transforms in the FPA structure which easily/quickly provide a way to determine
the chip associated with that FPA. I would have to look at every chip in that
FPA in order to determine which chip corresponds to that coordinate.
The same is true for cells/chips and readouts/cells.
Is this an oversight? It makes the process of determining a pixel value given,
say, and FPA-X/Y coordinate very expensive.
Change History (5)
comment:1 by , 22 years ago
| Status: | new → assigned |
|---|
comment:2 by , 22 years ago
This is becoming clearer to me.
If I convert FP(x,y) to Chip(x,y), then how do I determine if Chip(x,y) is
within the valid range for that chip?
As far as the performance optimization is concerned, maybe I should note this in
the code, and move on. Simply get it working for now, and later, if we realize
this function is being called often, we can decide to optimize it.
comment:3 by , 22 years ago
| Owner: | changed from to |
|---|---|
| Status: | assigned → new |
comment:4 by , 22 years ago
| Status: | new → assigned |
|---|
Since the transform from FPA to chip (and chip to cell, even) could conceivably
be non-linear (we certainly hope not, but it could happen), we may need to be
careful. Here's what I suggest:
- Calculate the FPA coordinates of the centres of each of the chips.
- For each of the four chips nearest to the coordinates of interest, determine
if the FPA coordinates of interest are within a parallelogram defined by the FPA
coordinates of the (0,0), (nx,0) and (0,ny) points on the chip.
If this turns out to be too expensive, then we might add some cheats into the
structs for reusabilitiy. Possibilities include storing:
- the coordinates of the centres and corners of each of the chips; or
- an inverse transform.
comment:5 by , 22 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
I assume this has been cleared up following our discussion at MHPCC a month ago.

perhaps we were being memory greedy. what would be needed would be the
coordinates of the center of each chip in the containing FPA. we envisioned
this calculation as part of the process, perhaps held static by the calling
function. but it would probably be safer to carry it with the FPA. The list
would need to be updated anytime the corresponding transformation changed.
to go from a given FPA (X,Y) to the corresponding containing chip, you need to
first find the likely chips. this means looping over all chips and finding
which chip centers are closest, up to 4 possible.
next, you need to test for each one if the given coordinate lies in the valid
range of the chip coordinates (ie, convert FPA(x,y) to chip(x,y); is this a
valid coordinate?) the answer may be: none are valid: the point could lie
between chips or outside valid chips.
we could add those points as psVectors in each of the corresponding data
structures. that makes sense.