bool Geometry::DistancePointLine( const Vector3& p3, const Vector3& p1, const Vector3& p2, float32 *distance )
bool withinLine = IntersectionPointLine( p3, p1, p2, &intersection );
if ( distance != NULL )
*distance = ( p3 - intersection ).Magnitude();
bool Geometry::IntersectionPointLine( const Vector3& p3, const Vector3& p1, const Vector3& p2, Vector3 *intersection )
Vector3 diff = p3 - p1;
Vector3 dir = p2 - p1;
float u = Vector3::DotProduct( diff, dir ) / Vector3::DotProduct( dir, dir );
if ( intersection != NULL )
*intersection = p1 + dir * u;
if ( ( u < 0.0f ) || ( u > 1.0f ) )
// closest point does not fall within the line segment
I needed to accurately determine the distance of particles from other scene geometry in order to fade out particles that are too close to things (which gets rid of nasty seams in the particles.) I'd used a method copied from somewhere but I noticed that particles got faded the further you got from them. This felt like a math error.
This week I did some digging around and found not one, but two methods to get the distance (in world coordinates) of a pixel from the camera.
So there's been a lot going on, but nothing interesting has been complete and ready to talk about.
An RTS staple feature which is new is building placement. Buildings render as transparent until they are placed, and they use the collision data, terrain incline, and distance from other buildings to determine if building placement is legal (with a red/green indicator.) Using red/green is a risk because some people can't tell the difference, and maybe I'll add an additional rendering indicator later, but for now I cheated a bit and made the green a little blue (the same trick used on traffic lights.)
I've also been thinking a lot about business models and how to monetize Miranda. I read this super-interesting piece in Wired on A/B testing a couple days ago (my stack of unread magazines has gotten a little unruly the last while.) If you have a website that gets any volume of traffic at all, and given how seemingly minor and arbitrary changes to a page can hugely affect the outcome, I can't understand why anyone wouldn't implement A/B testing. I'm going to be getting out my statistics books pretty soon.