  <?php

error_reporting(-1);
mb_internal_encoding('utf-8');

$text         = "Я люблю моё пусечку - Алёночку! Она самая лучшая";
$phraseLength = mb_strlen($text);

$height  = 30;
$centerX = 30;
$centerY = 15;

$startPoint = -80; // задаем начальную и конечную точки в градусах
$endPoint   = 260;

$radius = 13;

$screen = array();

for ($y = 0; $y < $height; $y++) {
    $screen[$y] = array_fill(0, 100, " ");
}



$length = $endPoint - $startPoint; //находим длину дуги, по которой будет располагаться текст

$angle = $length / $phraseLength; // находим угол, между двумя соседними буквами и центром круга

$chars = preg_split("//ui", $text, -1, PREG_SPLIT_NO_EMPTY);

for ($i = 0; $i < count($chars); $i++) {
    
    $shift = $startPoint + $i * $angle;
    $rad   = deg2rad($shift);
    
    $hor = cos($rad) * $radius;
    $ver = sin($rad) * $radius;
    
    $x = round(($centerX + $hor));
    $y = round($centerY + $ver);
    
    $screen[$y][$x] = $chars[$i];
}

foreach ($screen as $value) {
    
    foreach ($value as $char) {
        echo $char;
    }
    echo "\n";
}

