I never noticed FaceU/V in the ManipulationDeltaEventArgs. I didn't think they were used anywhere. I needed the face for a regular MouseLeftButtonDown.
In any case I till needed to turn FaceU/V into something useful. Here's what I came up with:
double x1 = MainCanvas.Width * tex[face.DiffuseA].U;
double y1 = MainCanvas.Height * tex[face.DiffuseA].V;
double x2 = MainCanvas.Width * tex[face.DiffuseB].U;
double y2 = MainCanvas.Height * tex[face.DiffuseB].V;
double x3 = MainCanvas.Width * tex[face.DiffuseC].U;
double y3 = MainCanvas.Height * tex[face.DiffuseC].V;
double MX = x1 + ((x3  x1) / 2.0);
double MY = y1 + ((y3  y1) / 2.0);
double slopeU = (y3  y1) / (x3  x1);
double UX = MX + ((x2  MX) * faceU);
double UY = MY + ((y2  MY) * faceU);
double NX = x1 + ((x2  x1) / 2.0);
double NY = y1 + ((y2  y1) / 2.0);
double slopeV = (y2  y1) / (x2  x1);
double VX = NX + ((x3  NX) * faceV);
double VY = NY + ((y3  NY) * faceV);
double BU, BV;
double rx, ry;
BU = UY  (UX * slopeU);
BV = VY  (VX * slopeV);
// rx, ry are the Texture UV coordinates of the mouse click
rx = (BV  BU) / (slopeU  slopeV);
ry = (slopeU * rx) + BU;
FaceU/V appear to be points perpendicular to edges 1 and 2. So I just find the slopes of the edges and interpolate. Note this code snippet doesn't handle bad slopes.
I would rather FaceU/V be the actual texture UV in the event but I can also see where the physical offsets could be useful.
