public static mat4 pickMatrix(vec2 center, vec2 delta, vec4 viewport)
{
if (delta.x <= 0 || delta.y <= 0)
throw new ArgumentOutOfRangeException();
var Result = new mat4(1.0f);
if (!(delta.x > (0f) && delta.y > (0f)))
return Result; // Error
vec3 Temp = new vec3(
((viewport[2]) - (2f) * (center.x - (viewport[0]))) / delta.x,
((viewport[3]) - (2f) * (center.y - (viewport[1]))) / delta.y,
(0f));
// Translate and scale the picked region to the entire window
Result = translate(Result, Temp);
return scale(Result, new vec3((viewport[2]) / delta.x, (viewport[3]) / delta.y, (1)));
}