Нарисуйте что-нибудь похожее на это:
В более точных терминах нарисуйте круг радиуса r с n равномерно касательными линиями длины l. Соедините концы этих линий, чтобы сформировать новый n-сторонний правильный многоугольник.
правила
r = радиус окружности
n = количество касательных линий - должно быть равномерно распределено по окружности (n> = 3)
l = длина стороны касательных линий
Создайте программу, которая принимает аргументы {r, n, l} и выводит требуемый результат.
Единицы в пикселях.
Нет никаких ограничений на местоположение рисунка, пока все это видно.
Картина довольно понятна.
Это код-гольф, поэтому выигрывает самый короткий код в байтах!
code-golf
graphical-output
Стрейч маньяк
источник
источник
Ответы:
Mathematica,
135132131123 байтаЭтот код ожидает ввода (через приглашение) точно так, как указано в вопросе: например
{100, 6, 150}
. Он создает векторную графику, поэтому я включаю ось, как указано в комментариях ОП.И касательные, и многоугольник на самом деле представляют собой одну полосу, проходя через «угол многоугольника, точку касания, угол многоугольника, следующий угол многоугольника, точку касания, угол многоугольника ...»
Если бы не ось, я мог бы сделать это в 107 байтов:
Дополнительные сбережения (помимо
Axes->1>0
) происходят из-за того, что теперь я могу масштабировать всеr
, что упрощает призыв кCircle
получению круга юнитов.источник
{0,0}~Circle~r
Python, 133 байта
Пока что единственный ответ - соблюдать правило «Единицы в пикселях» ...
Добавьте
exitonclick()
в конец, если вы не хотите, чтобы окно закрывалось немедленно.Выход:
python tangentpoly.py <<< "20, 6, 30"
:python tangentpoly.py <<< "100, 8, 200"
:источник
for i in n*[0]:c(r,360/n);fd(l);bk(l)
->exec'c(r,360/n);fd(l);bk(l)'*n;
T-SQL
440483Я не собираюсь выигрывать призы, но я люблю рисовать картинки :)
Редактировать Expletive! Просто заметил, что перепутал многоугольники, нарисованные по кругу. Исправлено по стоимости.
Выполняется со следующими переменными
Запустите в Sql Server Management Studio 2012+, на вкладке пространственных результатов будет показано следующее.
С участием
с участием
Расширенный
источник
MATLAB - 233 байта
Пример выходной функции для
n = 8, r = 4, l = 6
(оси включены для указания длины блока):Пример функции вывода для
n = 1024, r = 4, l = 2
:источник
HTML + JavaScript (E6) 298
Чтобы проверить, сохраните как HTML-файл и откройте с помощью FireFox. Вставьте параметры r, n, l в поле ввода, разделив их запятыми, затем нажмите табуляцию.
Или попробуйте jsfiddle
Образец вывода
источник