source: trunk/packages/vizservers/nanovis/Util.cpp @ 2812

Last change on this file since 2812 was 2798, checked in by ldelgass, 12 years ago

Add emacs mode magic line in preparation for indentation cleanup

  • Property svn:eol-style set to native
File size: 1.4 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2#include <Vector3.h>
3
4void evaluate(float fraction, float* key, int count, Vector3* keyValue, Vector3* ret)
5{
6    int limit = (int) count - 1;
7    if (fraction <= key[0])
8        {
9                *ret = keyValue[0];
10        }
11    else if (fraction >= key[limit])
12        {
13                *ret = keyValue[limit];
14        }
15        else
16        {
17                int n;
18        for (n = 0;n < limit; n++){
19                if (fraction >= key[n] && fraction < key[n+1]) break;
20        }
21
22        if (n >= limit){
23                        *ret = keyValue[limit];
24        }
25        else {
26            float inter = (fraction - key[n]) / (key[n + 1] - key[n]);
27            ret->set(
28                                inter * (keyValue[n + 1].x - keyValue[n].x) + keyValue[n].x,
29                                inter * (keyValue[n + 1].y - keyValue[n].y) + keyValue[n].y,
30                                inter * (keyValue[n + 1].z - keyValue[n].z) + keyValue[n].z);
31        }
32    }
33}
34
35void evaluate(float fraction, float* key, int count, float* keyValue, float* ret)
36{
37    int limit = (int) count - 1;
38    if (fraction <= key[0])
39        {
40                *ret = keyValue[0];
41        }
42    else if (fraction >= key[limit])
43        {
44                *ret = keyValue[limit];
45        }
46        else
47        {
48                int n;
49        for (n = 0;n < limit; n++){
50                if (fraction >= key[n] && fraction < key[n+1]) break;
51        }
52
53        if (n >= limit){
54                        *ret = keyValue[limit];
55        }
56        else {
57            float inter = (fraction - key[n]) / (key[n + 1] - key[n]);
58            *ret = inter * (keyValue[n + 1] - keyValue[n]) + keyValue[n];
59        }
60    }
61}
Note: See TracBrowser for help on using the repository browser.