Post-Of-The-Day #7 – Some links?

Beautiful

MIRAGES from Sabrina Ratté on Vimeo.

Also Beautiful

Between Bears from Eran Hilleli on Vimeo.

My own little thing:

Could Never Reach You from mario gonzalez on Vimeo.


My friend told me I should do videos for Chemical Brothers, and linked me to this – which i thought was so amazing.

The Chemical Brothers – Another World from ikkunapaikka on Vimeo.

I’m going to make something with that audio, it reminds me a lot of this thing i made.
Except that theirs is WAY better

Linewaves from mario gonzalez on Vimeo.


So i’ve been doing some face tracking stuff…. and i accidentally created some pretty linewaves.
I think I will try to combine the two. My face tracking stuff is still so primitive, but we’ll see what i can fake.

How to trace something in C++

Coming from an Actionscript background, i’ve become accustomed to being able to at will at any given point
tracing an object, or a value. It’s something i actually took for granted.

When I started using Cinder ( http://libcinder.org ) – and in the process doing C++. A language
at the time I had only barely used – but now i love. I realized that – trace, or speaking to my PHP background
printf is something that is not actually built in at all.

It’s something you have to turn into a c_string, which is basically a char* as i understand it.
Devnote: What is a Char* – it’s a pointer to the first character in a string of character, whose ASCI values ( 0 – 255 ) are mapped to strings.

So,
How do you trace a value in C++, be it an interger, string, float, double, or class?

In C++ ( and C? ) – it’s not as straigh forward, but fortunately we have something called operators.
An operator, is actualyl something you’re very accustomed to, such as:

+
-
*
/

Those are actually operators, and what does that mean? Well it means you can define one and when you’re
Type, comes across it it will run this function. We’ll get into it another time, cus its a great topic, but…
What that means right now, is that we can define a “<<" operator, so we can turn out data into a C-String with the relavent info. So we can say:
friend std::ostream& operator<<( std::ostream& lhs, const Vec2& rhs )
{
lhs << "[" << rhs.x << "," << rhs.y << "]"; return lhs; }

Which will make our console function return useful info.
For example:

console << Vec2f(10.0f, 11.1f) << std::endl;

One thing to note is that std::endl, what the heck is that?
It just means go into the STD namespace ( or package if you wanna use a different term )
and grab the "endl" constant... put that there.

Also - for POD ( Plain Old Data ) - we can call a toString function such as

template inline std::string toString (const T& t)
{
std::stringstream ss;
ss << t; return ss.str(); }

Which can be used as:

float pie = 3.1415
Console() << toString( pie ) << std::endl;

And that's how you get values out into the console in C++ / Cinder.