Maybe i didn't make my self clear I already have a ray/trianlge intersection method that is working, the problem is the ray that is created by mouse clicking is some how wrong.
TestIntersection(int visibleMouseX, int visibleMouseY)
{
float pointX, pointY;
D3DXMATRIX projectionMatrix, viewMatrix, inverseViewMatrix, worldMatrix, translateMatrix, inverseWorldMatrix;
D3DXVECTOR3 direction, origin, rayOrigin, rayDirection;
// Move the mouse cursor coordinates into the -1 to +1 range.
pointX = ((2.0f * (float)visibleMouseX) / (float)m_ResolutionWidth) - 1.0f;
pointY = (((2.0f * (float)visibleMouseY) / (float)m_ResolutionHight) - 1.0f) * -1.0f;
// Adjust the points using the projection matrix to account for the aspect ratio of the viewport.
m_D3D->GetProjectionMatrix(projectionMatrix);
pointX = pointX / projectionMatrix._11;
pointY = pointY / projectionMatrix._22;
// Get the inverse of the view matrix.
m_Camera->GetViewMatrix(viewMatrix);
D3DXMatrixInverse(&inverseViewMatrix, NULL, &viewMatrix);
// Calculate the direction of the picking ray in view space.
direction.x = (pointX * inverseViewMatrix._11) + (pointY * inverseViewMatrix._21) + inverseViewMatrix._31;
direction.y = (pointX * inverseViewMatrix._12) + (pointY * inverseViewMatrix._22) + inverseViewMatrix._32;
direction.z = (pointX * inverseViewMatrix._13) + (pointY * inverseViewMatrix._23) + inverseViewMatrix._33;
// Get the origin of the picking ray which is the position of the camera.
origin = m_Camera->GetPosition();
// Get the world matrix and translate to the location of the sphere.
m_D3D->GetWorldMatrix(worldMatrix);
//D3DXMatrixTranslation(&translateMatrix, 1800.0f, 20.0f, 1900.0f);
D3DXMatrixMultiply(&worldMatrix, &worldMatrix, &translateMatrix);
// Now get the inverse of the translated world matrix.
D3DXMatrixInverse(&inverseWorldMatrix, NULL, &worldMatrix);
// Now transform the ray origin and the ray direction from view space to world space.
D3DXVec3TransformCoord(&rayOrigin, &origin, &inverseWorldMatrix);
D3DXVec3TransformNormal(&rayDirection, &direction, &inverseWorldMatrix);
// Normalize the ray direction.
D3DXVec3Normalize(&rayDirection, &rayDirection);
Ray r;
r.P0 = rayOrigin;
r.P1 = rayDirection;
triangle tri;
tri.V0 = D3DXVECTOR3(1.0f, 0.0f, 1.0f);
tri.V1 = D3DXVECTOR3(100.0f, 0.0f, 100.0f);
tri.V2 = D3DXVECTOR3(0.0f, 0.0f, 100.0f);
D3DXVECTOR3 intersect;
intersect3D_RayTriangle(r, tri, &intersect);
return intersect;
}