public Color GetColor(Point point)
        {
            System.Drawing.Color color;
            PointZ location = new PointZ(point.X, point.Y, 0);

            if (colorLocatedByPointerList.ContainsKey(location))
            {
                color = colorLocatedByPointerList[location];
            }
            else
            {
                color = imagen.GetPixel(point.X, point.Y);
                colorLocatedByPointerList.Add(location, color);
                if (!pointLocatedByColorList.ContainsKey(color.ToArgb()))
                {
                    pointLocatedByColorList.Add(color.ToArgb(), point);
                }
            }
            return(color);
        }
        //aqui empieza la serializacion de cada tipo

        public static byte[] GetBytes(PointZ point)
        {
            return(GetBytes(point.X).AddArray(GetBytes(point.Y), GetBytes(point.Z)));
        }