I think I figured it out. So here's the snippet of code that I am now working with:
Magick::Image srcImage;
srcImage.read("001.png");
srcImage.resize("x100"); // I want images at least 100 pixels high
Magick::Color color(0, 0, 0); // images should always be on a black background
// to add space beween a repeating image, add a value to .columns()
// for example:
// srcImage.extent(Magick::Geometry(srcImage.columns() + 10, 100), color);
// will add 10 pixels of space or padding after each image repeat
srcImage.extent(Magick::Geometry(srcImage.columns(), 100), color);
// preprocess
// .columns() is multiplied by the amount of times the image repeats in the circle
// for example, this repeats the image 8 times:
// srcImage.size(Magick::Geometry(srcImage.columns() * 8, 100));
srcImage.size(Magick::Geometry(srcImage.columns() * 8, 100));
srcImage.virtualPixelMethod(Magick::HorizontalTileEdgeVirtualPixelMethod);
const double tileArgs[1] = {0};
srcImage.distort(Magick::ScaleRotateTranslateDistortion, 1, tileArgs, Magick::MagickTrue);
// distort
srcImage.virtualPixelMethod(Magick::BlackVirtualPixelMethod);
const double arcArgs[4] = {360, 0, 98, 30};
srcImage.distort(Magick::ArcDistortion, 4, arcArgs, Magick::MagickTrue);
srcImage.write("001-out.png");