<?php
function coordinate($angle, $radius)
{
# Расчет сторон треугольника
# Расчет координат буквы
$y = ($radius - $b);
$x = ($radius + $a) * 2.7;
return [$x, $y];
}
$phrase = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$radius = 12.5;
$fromAngle = 80; // Угол с которого начинается фраза
$route = '-'; // Принимает два значения + и - , в зависимости от этого меняется напрвление
$characters = preg_split('//u', $phrase, -1, PREG_SPLIT_NO_EMPTY
);
if ($route == '+') {
$angle = 360;
} else {
$angle = -360;
}
$angleBetween = $angle / $phraseLength; // Угол между буквами
$angleOfEachLetter = []; // Массив, который будет содержать угол для каждой буквы
for ($i = 0; $i <= $phraseLength; $i++) {
$angleOfEachLetter[] = $fromAngle + $i * $angleBetween; // Добавление угла
}
foreach ($angleOfEachLetter as $angle) {
$coordinatesXY = coordinate($angle, 12.5); // Получаем координаты [x, y] в зависимости от угла буквы
$coordinatesX[] = $coordinatesXY[0]; // Массив значений координат X
$coordinatesY[] = $coordinatesXY[1]; // Массив значений координат Y
}
//
for ($i = 0; $i < $phraseLength; $i++) {
$strings[$coordinatesY[$i]][$coordinatesX[$i]] = $characters[$i];
}
foreach ($strings as $string) {
}
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ3V0Zi04Jyk7CgpmdW5jdGlvbiBjb29yZGluYXRlKCRhbmdsZSwgJHJhZGl1cykKewogICAgIyDQoNCw0YHRh9C10YIg0YHRgtC+0YDQvtC9INGC0YDQtdGD0LPQvtC70YzQvdC40LrQsAogICAgJGEgPSBjb3MoZGVnMnJhZCgkYW5nbGUpKSAqICRyYWRpdXM7CiAgICAkYiA9IHNpbihkZWcycmFkKCRhbmdsZSkpICogJHJhZGl1czsKCiAgICAjINCg0LDRgdGH0LXRgiDQutC+0L7RgNC00LjQvdCw0YIg0LHRg9C60LLRiwogICAgJHkgPSAoJHJhZGl1cyAtICRiKTsKICAgICR4ID0gKCRyYWRpdXMgKyAkYSkgKiAyLjc7CgogICAgcmV0dXJuIFskeCwgJHldOwp9CgokcGhyYXNlID0gItCQ0JHQktCT0JTQldCB0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7QryI7CiRyYWRpdXMgPSAxMi41OwokZnJvbUFuZ2xlID0gODA7IC8vINCj0LPQvtC7INGBINC60L7RgtC+0YDQvtCz0L4g0L3QsNGH0LjQvdCw0LXRgtGB0Y8g0YTRgNCw0LfQsAokcm91dGUgPSAnLSc7IC8vINCf0YDQuNC90LjQvNCw0LXRgiDQtNCy0LAg0LfQvdCw0YfQtdC90LjRjyArINC4IC0gLCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0Y3RgtC+0LPQviDQvNC10L3Rj9C10YLRgdGPINC90LDQv9GA0LLQu9C10L3QuNC1CiRjaGFyYWN0ZXJzID0gcHJlZ19zcGxpdCgnLy91JywgJHBocmFzZSwgLTEsIFBSRUdfU1BMSVRfTk9fRU1QVFkpOwokcGhyYXNlTGVuZ3RoID0gbWJfc3RybGVuKCRwaHJhc2UpOwoKaWYgKCRyb3V0ZSA9PSAnKycpIHsKICAgICRhbmdsZSA9IDM2MDsKfSBlbHNlIHsKICAgICRhbmdsZSA9IC0zNjA7Cn0KCiRhbmdsZUJldHdlZW4gPSAkYW5nbGUgLyAkcGhyYXNlTGVuZ3RoOyAvLyDQo9Cz0L7QuyDQvNC10LbQtNGDINCx0YPQutCy0LDQvNC4CiRhbmdsZU9mRWFjaExldHRlciA9IFtdOyAvLyDQnNCw0YHRgdC40LIsINC60L7RgtC+0YDRi9C5INCx0YPQtNC10YIg0YHQvtC00LXRgNC20LDRgtGMINGD0LPQvtC7INC00LvRjyDQutCw0LbQtNC+0Lkg0LHRg9C60LLRiwoKZm9yICgkaSA9IDA7ICRpIDw9ICRwaHJhc2VMZW5ndGg7ICRpKyspIHsKICAgICRhbmdsZU9mRWFjaExldHRlcltdID0gJGZyb21BbmdsZSArICRpICogJGFuZ2xlQmV0d2VlbjsgLy8g0JTQvtCx0LDQstC70LXQvdC40LUg0YPQs9C70LAKfQpwcmludF9yKCRhbmdsZU9mRWFjaExldHRlcik7Cgpmb3JlYWNoICgkYW5nbGVPZkVhY2hMZXR0ZXIgYXMgJGFuZ2xlKSB7CiAgICAkY29vcmRpbmF0ZXNYWSA9IGNvb3JkaW5hdGUoJGFuZ2xlLCAxMi41KTsgLy8g0J/QvtC70YPRh9Cw0LXQvCDQutC+0L7RgNC00LjQvdCw0YLRiyBbeCwgeV0g0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGD0LPQu9CwINCx0YPQutCy0YsKICAgICRjb29yZGluYXRlc1hbXSA9ICRjb29yZGluYXRlc1hZWzBdOyAvLyDQnNCw0YHRgdC40LIg0LfQvdCw0YfQtdC90LjQuSDQutC+0L7RgNC00LjQvdCw0YIgWAogICAgJGNvb3JkaW5hdGVzWVtdID0gJGNvb3JkaW5hdGVzWFlbMV07IC8vINCc0LDRgdGB0LjQsiDQt9C90LDRh9C10L3QuNC5INC60L7QvtGA0LTQuNC90LDRgiBZCgp9Ci8vIAokc3RyaW5nID0gYXJyYXlfZmlsbCgwLCAkcmFkaXVzICogMiAqIDIuNywgJyAnKTsKJHN0cmluZ3MgPSBhcnJheV9maWxsKDAsICRyYWRpdXMgKiAyLCAkc3RyaW5nKTsKCmZvciAoJGkgPSAwOyAkaSA8ICRwaHJhc2VMZW5ndGg7ICRpKyspIHsKICAgICRzdHJpbmdzWyRjb29yZGluYXRlc1lbJGldXVskY29vcmRpbmF0ZXNYWyRpXV0gPSAkY2hhcmFjdGVyc1skaV07Cn0KCmZvcmVhY2ggKCRzdHJpbmdzIGFzICRzdHJpbmcpIHsKICAgIGVjaG8gaW1wbG9kZSgkc3RyaW5nKSAuIFBIUF9FT0w7Cn0K