I used the cos between O-P and the midperpendicular to get the base scale factor for the final point. Here is the code that maps the point correctly (I think) to the circle.
Vector2 MapPointOnEquilateralTriangleToCircle(Vector2 P){ float angle = Angle(new Vector2(0, 1), P); angle *= 180.0f / (float)Math.PI; if (angle < 0) angle += 360.0f; float cos; if (angle <= 120) cos = (float)Math.Cos(Angle(nrmAB, P)); else if (angle <= 240) cos = (float)Math.Cos(Angle(nrmBC, P)); else cos = (float)Math.Cos(Angle(nrmCA, P)); float f = 1 - (2 * (1 - cos)); Vector2 n = new Vector2(P); float len = n.Normalize(); return P + (n * f * len);}
EDIT: removed code that did not work
[Edited by - Scythen on March 21, 2008 5:31:39 PM]