private void DrawObstacle(IGraphics g, WorldTransform wt, OperationalObstacle obs)
        {
            IPen pen = g.CreatePen();

            pen.Width = nom_pixel_width / wt.Scale;
            pen.Color = classColors[(int)obs.obstacleClass];

            g.DrawPolygon(pen, Utility.ToPointF(obs.poly));

            if (obs.headingValid)
            {
                DrawingUtility.DrawArrow(g, obs.poly.GetCentroid(), Coordinates.FromAngle(obs.heading), 4, 0.75, Color.Black, wt);
            }

            if (ageRenderFlag || obs.ignored)
            {
                // draw the model confidence
                string labelString = "";
                if (ageRenderFlag)
                {
                    labelString += obs.age.ToString();
                }
                if (obs.ignored)
                {
                    if (labelString.Length != 0)
                    {
                        labelString += ", ";
                    }
                    labelString += "IGN";
                }

                SizeF stringSize = g.MeasureString(labelString, labelFont);
                stringSize.Width  /= wt.Scale;
                stringSize.Height /= wt.Scale;
                Coordinates labelPt      = obs.poly.GetCentroid();
                RectangleF  rect         = new RectangleF(Utility.ToPointF(labelPt), stringSize);
                float       inflateValue = 4 / wt.Scale;
                rect.X     -= inflateValue;
                rect.Y     -= inflateValue;
                rect.Width += 2 / wt.Scale;
                g.FillRectangle(Color.FromArgb(127, Color.White), rect);
                g.DrawString(labelString, labelFont, Color.Black, Utility.ToPointF(labelPt));
            }
        }