<?php
/**
 * Created by PhpStorm.
 * Date: 26.03.15
 * Time: 15:01
 */

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

$phrase = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$phraseLength = mb_strlen($phrase);               // Количество букв

$fromAngle = -80;
$toAngle = 260;
$radius = 12.5;

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

$screen = array();
for($y = 0; $y < $height; $y++){
    $screen[$y] = array_fill(0,80,' ');
}

$angelString = $toAngle - $fromAngle;           // Общий угол для всей строки
$distance = $angelString/$phraseLength;         // Угол между буквами
$angelChar = round($distance);                  // Угол первой буквы

for($i = 0; $i < $phraseLength; $i++) {
    $x = $centerX + round($radius * sin(deg2rad($angelChar))*2.1); // Координата X с подобранной погрешнастью
    $y = $centerY + round($radius * cos(deg2rad($angelChar)));     // Координата Y
    $angelChar += $distance;                                       // Переход к углу следующей букве
    $char = mb_substr($phrase,$i,1);                               // Получаем букву
    $screen[$y][$x]=$char;                                         // Записываем букву в координаты X и Y
}

foreach(array_reverse($screen) as $string){
    echo implode("",$string)."\n";                                 // Выводим буквы
}

