<?php

error_reporting(-1);
mb_internal_encoding('utf-8');
//Вводим фразу и определяем ее длину
$phrase="Теряется первый символ";
$phraseLenght=mb_strlen($phrase);
//Вводим радиус, по которому будут писаться буквы, высоту(?), центр координат Х и Y, вводим переменные для угла и буквы
$radius=12.5;

$height=35;
$centerX=40;
$centerY=15;
$angle=0;
$word='';

//Создаем массив, который будет включать в себя $y массивов, в которых будет содержаться по 80 элементов ' '
$screen=array();
for ($y=0; $y<$height;$y++){
    $screen[$y]=array_fill(0,80,' ');
}
//Посимвольно перебираем строку до тех пор, пока количество итераций не превысит число символов в строке
for ($i=0;$i<=$phraseLenght;$i++){
    //Выбираем букву из строки
    $word=mb_substr($phrase,$i,1);
    //Определяем угол. Так как нужно писать по кругу, каждый следующий угол будет равен сумме предыдущего и угла,
    //равного 360/количество символов. Попутно переводим угол в радианы
    $angle=$angle+((360/$phraseLenght)*pi()/180);
    //Определяем координату Х по правилу прямоугольного треугольника. Для Х необходим корректирующий коэффициент,
    //подобранный долгими мучениями в лабораторных условиях
    $coordinateX=3*(round($radius*sin($angle)));
    //То же с Y, только уже без коррекции
    $coordinateY=round($radius*cos($angle));
    //В массиве $screen лежат координаты Y, а в массиве $screen[$y]- координаты Х. Помня, что центры координат находятся не в [0,0],
    //прибавляем каждую координату к значению центра координат
    $screen[$centerY+$coordinateY][$centerX+$coordinateX]=$word;
}
//Выводим значения массива $screen, склеивая через ' ' и добавляя после каждого выведенного массива $screen[$y] "\n"
foreach ($screen as $v){
    $string=implode ('',$v);
    echo $string . "\n";
}
