Note that there are some explanatory texts on larger screens.

plurals
  1. POC++ map question
    primarykey
    data
    text
    <p>I have an integral position-based algorithm. (That is, the output of the algorithm is based on a curvilinear position, and each result is influenced by the values of the previous results).</p> <p>To avoid recalculating each time, I would like to pre-calculate at a given sample rate, and subsequently perform a lookup and either return a pre-calculated result (if I land directly on one), or interpolate between two adjacent results.</p> <p>This would be trivial for me in F# or C#, but my C++ is very rusty, (and wasn't even ever that good).</p> <p>Is map the right construct to use? And could you be so kind as to give me an example of how I'd perform the lookup? (I'm thinking of precalculating in milimetres, which means the key could be an int, the value would be a double).</p> <p><strong>UPDATE</strong> OK, maybe what I need is a sorted dictionary. (Rolls up sleeves), pseudocode:</p> <pre><code>//Initialisation fun MyFunction(int position, double previousresult) returns double {/*etc*/}; double lastresult = 0.0; for(int s = startposition to endposition by sampledist) { lastresult = MyFunction(s, lastresult); MapOrWhatever.Add(s, lastresult); } //Using for lookup fun GetValueAtPosition(int position) returns double { CheckPositionIsInRangeElseException(position); if(MapOrWhatever.ContainsKey(position)) return MapOrWhatever[position]; else { int i = 0; //or possibly something clever with position % sampledist... while(MapOrWhatever.Keys[i] &lt; position) i+=sampledist; return Interpolate(MapOrWhatever, i, i+sampledist, position); } } </code></pre> <p>Thinks... maybe if I keep a constant sampledist, I could just use an array and index it...</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload