private static List <BetterListViewItem> getSimulationDetailItem(ZhangSimulation s)
        {
            var r = new List <BetterListViewItem>();

            if (s == null || s.Chessboards.Count == 0)
            {
                var item = new BetterListViewItem(new[] {
                    s == null ? "No Simulation Selected" : "No Chessboards!"
                });
                item.Tag = null;
                r.Add(item);
                return(r);
            }
            var boards = s.Chessboards;

            for (int i = 0; i < boards.Count; i++)
            {
                var item = new BetterListViewItem(new[] {
                    boards[i].ToString(),
                    calcAngle(s.Camera, boards[i]).ToString(),
                    (s.Camera.Pos - boards[i].Pos).Norm.ToString(),
                    s.ReporjectionErrorRMS.Count != boards.Count ? "niet berekend" : s.ReporjectionErrorRMS[i].ToString()
                });
                item.Tag = boards[i];
                r.Add(item);
            }
            return(r);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var c = PinholeCamera.getTestCamera();
            var b = new ChessBoard(8, 6, 20);
            var s = ZhangSimulation.CreateSimulation(c, b, 5,
                                                     count => Util.gaussDistr(count, .5, .2, .20, 1),
                                                     count => Util.gaussDistr(count, 0, Math.PI / 4, -Math.PI / 2, Math.PI / 2)
                                                     );

            _simulations.Add(s);
        }