public function svg()
    {
        $str_g = '';

        foreach ($this->arr_units as $k => $u) {
            $int_dx = 0;
            $int_dy = 0;

            if ($k == self::TOP_RIGHT) {
                $int_dx = Unit::SIZE;
            } elseif ($k == self::BOTTOM_RIGHT) {
                $int_dx = Unit::SIZE;
                $int_dy = Unit::SIZE;
            } elseif ($k == self::BOTTOM_LEFT) {
                $int_dy = Unit::SIZE;
            }

            $str_attr_translate = sprintf(
                ' transform="translate(%d, %d)"',
                $int_dx,
                $int_dy
            );

            if ($int_dx || $int_dy) {
                $str_g .= sprintf('<g%s>%s</g>', $str_attr_translate, $u->svg()) . "\n";
            } else {
                $str_g .= $u->svg() . "\n";
            }
        }

        $str_attr = '';

        if ($this->type != self::TOP_LEFT) {
            $int_dx = 0;
            $int_dy = 0;

            if ($this->type == self::TOP_RIGHT) {
                $int_dx = self::SIZE;
            } elseif ($this->type == self::BOTTOM_RIGHT) {
                $int_dx = self::SIZE;
                $int_dy = self::SIZE;
            } elseif ($this->type == self::BOTTOM_LEFT) {
                $int_dy = self::SIZE;
            }

            $int_way = $this->bool_rotate_way ? -1 : 1;
            $str_attr = sprintf(
                ' transform="translate(%d, %d) rotate(%d, %d, %d)"',
                $int_dx,
                $int_dy,
                $this->type * 90 * $int_way,
                Unit::SIZE,
                Unit::SIZE
            );
        }

        return sprintf(
            '<g id="quarter-%d"%s>%s</g>'."\n",
            $this->type,
            $str_attr,
            $str_g
        );
    }