Desenhe algo parecido com isto:
Em termos mais precisos, desenhe um círculo de raio r, com n espaços iguais de linhas tangentes de comprimento l. Conecte as extremidades dessas linhas para formar um novo polígono regular de n lados.
Regras
r = raio do círculo
n = número de linhas tangentes - deve estar uniformemente espaçado ao redor do círculo (n> = 3)
l = comprimento lateral das linhas tangentes
Crie um programa que aceite os argumentos {r, n, l} e desenhe a saída necessária.
As unidades estão em pixels.
Não há restrições para a localização do desenho, desde que tudo esteja visível.
A imagem é bastante auto-explicativa.
Isso é código-golfe, então o código mais curto em bytes vence!
code-golf
graphical-output
Stretch Maniac
fonte
fonte
Respostas:
Mathematica,
135132131123 123 bytesEste código espera a entrada (via prompt) exatamente como especificado na pergunta: por exemplo
{100, 6, 150}
. Ele produz um gráfico vetorial, por isso estou incluindo um eixo, conforme especificado nos comentários do OP.As tangentes e o polígono são na verdade uma única faixa de linha, percorrendo "canto do polígono, ponto tangente, canto do polígono, próximo canto do polígono, ponto tangente, canto do polígono ..."
Se não fosse o eixo, eu poderia fazer isso em 107 bytes:
Economias adicionais (além de
Axes->1>0
) vêm do fato de que agora posso redimensionar tudor
, o que simplifica a chamada paraCircle
gerar um círculo unitário.fonte
{0,0}~Circle~r
Python, 133 bytes
Até agora, a única resposta para cumprir a regra "As unidades estão em pixels" ...
Adicione
exitonclick()
ao final se você não quiser que a janela se feche imediatamente.Resultado:
python tangentpoly.py <<< "20, 6, 30"
:python tangentpoly.py <<< "100, 8, 200"
:fonte
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
440483Não vou ganhar nenhum prêmio com este, mas eu gosto de desenhar :)
Editar palavrões! Só notei que errei por polígonos desenhados em todo o círculo. Corrigido a um custo.
Executado com as seguintes variáveis
Executar no Sql Server Management Studio 2012+, ele retornará o seguinte na guia de resultados espaciais.
Com
com
Expandido
fonte
MATLAB - 233 bytes
Saída da função de amostra para
n = 8, r = 4, l = 6
(eixos incluídos para indicar o comprimento da unidade):Saída da função de amostra para
n = 1024, r = 4, l = 2
:fonte
HTML + JavaScript (E6) 298
Para testar, salve como um arquivo html e abra com o FireFox. Insira os parâmetros r, n, l no campo de entrada, separados por vírgula e, em seguida, tabule.
Ou tente jsfiddle
Saída de amostra
fonte