Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

PHP вывод фразы по кругу в текстовом режиме

Лекция



Привет, сегодня поговорим про php вывод фразы по кругу в текстовом режиме, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое php вывод фразы по кругу в текстовом режиме , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .

PHP вывод фразы по кругу в текстовом режиме 340:-80:260
А: a=-80: r=-1.3962634015955: x=15: y=17
Б: a=-69.032258064516: r=-1.2048401933122: x=17: y=19
В: a=-58.064516129032: r=-1.013416985029: x=19: y=22
Г: a=-47.096774193548: r=-0.82199377674572: x=22: y=24
Д: a=-36.129032258065: r=-0.63057056846247: x=25: y=25
Е: a=-25.161290322581: r=-0.43914736017922: x=29: y=26
Ё: a=-14.193548387097: r=-0.24772415189597: x=34: y=27
Ж: a=-3.2258064516129: r=-0.05630094361272: x=39: y=27
З: a=7.741935483871: r=0.13512226467053: x=43: y=27
И: a=18.709677419355: r=0.32654547295378: x=48: y=27
Й: a=29.677419354839: r=0.51796868123703: x=52: y=26
К: a=40.645161290323: r=0.70939188952028: x=56: y=24
Л: a=51.612903225806: r=0.90081509780353: x=60: y=23
М: a=62.58064516129: r=1.0922383060868: x=62: y=21
Н: a=73.548387096774: r=1.28366151437: x=64: y=19
О: a=84.516129032258: r=1.4750847226533: x=65: y=16
П: a=95.483870967742: r=1.6665079309365: x=65: y=14
Р: a=106.45161290323: r=1.8579311392198: x=64: y=11
С: a=117.41935483871: r=2.049354347503: x=62: y=9
Т: a=128.38709677419: r=2.2407775557863: x=60: y=7
У: a=139.35483870968: r=2.4322007640695: x=56: y=6
Ф: a=150.32258064516: r=2.6236239723528: x=52: y=4
Х: a=161.29032258065: r=2.815047180636: x=48: y=3
Ц: a=172.25806451613: r=3.0064703889193: x=43: y=3
Ч: a=183.22580645161: r=3.1978935972025: x=39: y=3
Щ: a=194.1935483871: r=3.3893168054858: x=34: y=3
Ь: a=205.16129032258: r=3.580740013769: x=29: y=4
Ы: a=216.12903225806: r=3.7721632220523: x=25: y=5
Ь: a=227.09677419355: r=3.9635864303355: x=22: y=6
Э: a=238.06451612903: r=4.1550096386188: x=19: y=8
Ю: a=249.03225806452: r=4.346432846902: x=17: y=11
Я: a=260: r=4.5378560551853: x=15: y=13
                                                                                


Щ Ч Ц Х
Ь Ф
Ы
Ь У
Т
Э
С

Ю Р

Я
П

О
А

Б Н

М
В
Л
Г К
Д
Е Й
Ё Ж З И


Подсказки для глупеньких Разберем задачу по пунктам. Об этом говорит сайт https://intellect.icu . Во-первых, как найти, где должна находиться та или иная буква? Как расставить их по кругу? Для этого придется вспомнить тригонометрию. Если точка находится на круге, то есть определенный угол а между, допустим осью X и линией, проведенной к точке. Угол измеряется в градусах и может принимать значения от 0 до 360*. Соответственно, буквы можно поставить так, чтобы угол а до них равномерно менялся от 0 до 360*. Например, если у нас фраза из 36 символов, то можно расставлять буквы через каждые 10* - в сумме как раз наберется 360*, или полный круг. То есть, делим 360* на число букв и получаем угол между 2 соседними буквами. Итак, предположим, что центр круга совпадает с началом координат. Нам известен радиус круга и угол, на котором находится буква. Как теперь найти ее координаты? Опять придется вспомнить тригонометрию. Мы можем взять точку с буквой и опустить из нее перпендикуляр (отрезок LK). Мы получаем прямоугольный треугольник (OLK), а в прямоугольном треугольнике, как известно, стороны связаны между собой через синус, косинусы и тангенсы и угол а (почитай про синус в Википедии). Чтобы не мучать тебя формулами и математикой, так и быть, сразу же напишу формулу для решения. Итак, sin(a)= LK / LO, а cos(a)= КО / LO. LO - это радиус круга (его мы задаем сами и он нам известен), а у конкретной буквы нам тоже известен, потому переставив местами пару слагаемых, получаем (координата х буквы) КО = LO * sin(a) (координата у буквы) LK = LO * cos(a) Итак, чтобы получить координаты буквы, достаточно подставить радиус круга (LO) и угол а в формулу. Итак, мы можем вычислить координаты любой буквы. Остался последний вопрос: а как расположить букву в нужной точке? Ведь echo выводит текст слева направо, а на в произвольном порядке. Итак, как выводить буквы в заданных позициях? Для этого мы сделаем массив, каждый элемент которого представляет собой строчку. Каждая строчка, в свою очередь, является массивом, состоящим из отдельных букв. Изначально все элементы этих массивов мы заполняем пробелами, то есть получаем что-то вроде: $screen = array(); $screen[0] - array(0 => ' ', 1 => ' ', 2 => ' ', ...); $screen[l] = array(0 => ' ', 1 => ' ', 2 => ' ', ...); • •• • $screen[29] - array(0 =>' ',1=> ' ', 2 =>' ' ...);
PHP вывод фразы по кругу в текстовом режиме
Итак, $screen[0] - это первая строка, a $screen[0][0] - первая буква первой строки. 
Мы можем записать какую-то букву в элемент Sscreen [$у][$х], чтобы вывести ее в нужном месте.
После того, как мы нашли координаты каждой буквы и поместили их в массив Sscreen, остается его вывести.
 Для этого мы просто в цикле проходим по этому массиву и выводим символы из него. 
 
 Можно выводить за раз целую строчку, если с умом применить функцию implode().
 
Собственно, этой информации более чем достаточно, предупрежу лишь о подвохах. Вот они:
- в РНР (как и вообще в программировании) функции sln() и cos() принимают угол в радианах. 
 Радиан - это такая единица измерения, в которой 180* соответствуют числу п (3.1415...).
   Как перевести из градусов в радианы - подумай сам или погугли.
- Возможно, при расчете координат придется поменят знак на минус: перед координатами х или у.
- В массив $screen можно записывать буквы только под целыми координатами 
(а синус доет дробный результат) - значит надо не забыть про округление и round()
- Поскольку буквы не квадратные, а прямоугольные, координату х надо домножить на подобранный 
  опытным путем коэффициент, иначе круг будет сплющенным
- Если менять не только угол, но и радиус, можно сделать спираль вместо круга!


<?php
error_reporting(-1);
mb_internal_encoding('utf-8');

function mod($a, $n) {
return ($a % $n) + ($a < 0 ? $n : 0);
}


function dif($argument0,$argument1)
{
$d= rad2deg( deg2rad($argument1)- deg2rad($argument0));
if ($d<0)$d=360+$d;
return $d;

}
$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, ' ');
}


// if ($toAngle<0)$toAngle=360+$toAngle;
//if ($fromAngle<0)$fromAngle=180+$fromAngle;

/* $fromAngle=$fromAngle-270;
$toAngle=$toAngle-270;
*/
echo dif($fromAngle,$toAngle),':',$fromAngle,':',$toAngle,"<br />";
$n=0;
$a=$fromAngle;//

for ($n=0;$n<$phraselength;$n++)
{


$x=round($centerX+2.0*$radius * sin(deg2rad ($a)));
$y=round($centerY+$radius * cos(deg2rad ($a)));

echo mb_substr( $phrase,$n,1),': a=' ,$a,': r=' ,deg2rad($a),': x=',$x,': y=',$y,"<br />";
$screen[$y][$x]=mb_substr( $phrase,$n,1) ;
$a=$a+dif($fromAngle,$toAngle) /($phraselength-1);
if ($a>360)$a=0;
}
echo "<pre>";
//var_dump($screen);
foreach ($screen AS $st)
{ $st=implode('',$st);
echo $st."<br />";
}

PHP вывод фразы по кругу в текстовом режиме

Надеюсь, эта статья про php вывод фразы по кругу в текстовом режиме, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое php вывод фразы по кругу в текстовом режиме и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

создано: 2015-04-10
обновлено: 2021-03-13
349



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)