you have a high chance of having normal to be [0,0] if point1, point2 and point3 are on the same line.
I would do:
focalPoint = point2;
normal = normalize( direction1 + direction2 )
currentPoint = focalPoint + normal
viewUp = normalize( direction2 - direction1 ) // or something like vtkMath.perpendiculars(normal, [], viewUp)