private vec3 GetArcBallPosition(int x, int y)
{
float rx = (x - _width / 2) / _length;
float ry = (_height / 2 - y) / _length;
float zz = _radiusRadius - rx * rx - ry * ry;
float rz = (zz > 0 ? (float)Math.Sqrt(zz) : 0.0f);
var result = new vec3(
rx * _vectorRight.x + ry * _vectorUp.x + rz * _vectorBack.x,
rx * _vectorRight.y + ry * _vectorUp.y + rz * _vectorBack.y,
rx * _vectorRight.z + ry * _vectorUp.z + rz * _vectorBack.z
);
//var position = new vec3(rx, ry, rz);
//var matrix = new mat3(_vectorRight, _vectorUp, _vectorBack);
//result = matrix * position;
return result;
}