Hi,
I'm trying to compute the weighted average of some data. Originally I had a set of greyscale colours, and did:
Vec avg = Vec(0);
Flt count = 0;
FREP(n) {
Vec pos = ...;
Color weight = ...; // greyscale between 0 (black) and 255 (white);
avg += pos * weight.asVec();
count += weight.asVec().x;
}
avg /= count;
This worked, however I want to use Flts now instead of colours (i'm done visualising). But for some reason I get -1.#INF000 etc for count and -1.#IND000 for avg.
e.g:
FREP(n) {
Vec pos = ...;
Flt weight = ...;
avg += pos * weight; // this works if I use avg += pos * Color(Vec(weight)).asVec(); and..
count += weight; // count += Color(Vec(weight)).asVec().x;
}
avg /= count;
I tried checking for division by zero.
What is it in converting the weight to a colour byte which makes it work? I just want to understand why its not working with floats - why count and avg are -1.#INF000 when they get to the division.
EDIT: Solved, I needed to check if the weight was greater than zero before multiplying it. So strange that I didn't need to do this when it was a zero colour.asVec(); Must've been guarded in EE already then ~ haven't been stuck on such a basic error as this for a looong time