public static void Main()
var physicalPanelWidth = 3f;
var pointPanelWidth = 1280f;
var pointPanelHeight = 720f;
var elementPointWidth = 60f;
var halfPhysWidth = physicalPanelWidth / 2f;
var halfPanelFoV = Math.Atan(halfPhysWidth / panelDistance);
var panelFoV = halfPanelFoV * 2 * (180/Math.PI);
var angularResolution = panelFoV / pointPanelWidth;
var elementAngularSize = elementPointWidth * angularResolution;
Console.WriteLine($"Panel angular width: {panelFoV:f2} degrees\n");
Console.WriteLine($"Angular resolution: {angularResolution:f4} deg/pt, {1/angularResolution:f2} pt/deg\n");
Console.WriteLine($"Element angular width: {elementPointWidth}pt is {elementAngularSize:f2} deg\n");
var horizElementsPerWindow = Math.Floor(pointPanelWidth / elementPointWidth);
Console.WriteLine($"Max elements row len: {horizElementsPerWindow}\n");
var panelAngularHeight = pointPanelHeight * angularResolution;
var halfPanelAngularHeight = panelAngularHeight * (Math.PI / 180) / 2f;
var halfPanelPhysicalHeight = Math.Tan(halfPanelAngularHeight) * panelDistance;
Console.WriteLine($"Panel angular height: {panelAngularHeight:f2} deg\n");
Console.WriteLine($"Panel physical height: {halfPanelPhysicalHeight * 2f:f2} m\n");