fixed tangent generation