Dibuja algo que se vea así:
En términos más precisos, dibuje un círculo de radio r, con n líneas tangentes de longitud uniforme l. Conecte los extremos de estas líneas para formar un nuevo polígono regular de n lados.
Reglas
r = radio del círculo
n = número de líneas tangentes: debe estar uniformemente espaciado alrededor del círculo (n> = 3)
l = longitud lateral de las líneas tangentes
Cree un programa que acepte los argumentos {r, n, l} y dibuje el resultado requerido.
Las unidades están en píxeles.
No hay restricciones en la ubicación del dibujo, siempre y cuando todo esté visible.
La imagen se explica por sí misma.
Este es el código de golf, por lo que gana el código más corto en bytes.
code-golf
graphical-output
Estiramiento Maniaco
fuente
fuente
Respuestas:
Mathematica,
135132131123 bytesEste código espera la entrada (a través de una solicitud) exactamente como se especifica en la pregunta: por ejemplo
{100, 6, 150}
. Produce un gráfico vectorial, por lo que incluyo un eje, como se especifica en los comentarios del OP.Tanto las tangentes como el polígono son en realidad una sola línea, al atravesar "esquina de polígono, punto de tangente, esquina de polígono, siguiente esquina de polígono, punto de tangente, esquina de polígono ..."
Si no fuera por el eje, incluso podría hacer esto en 107 bytes:
Los ahorros adicionales (aparte de
Axes->1>0
) provienen del hecho de que ahora puedo reescalar todor
, lo que simplifica la llamada aCircle
producir un círculo unitario.fuente
{0,0}~Circle~r
Python, 133 bytes
La única respuesta hasta ahora para cumplir con la regla "Las unidades están en píxeles" ...
Agregue
exitonclick()
al final si no desea que la ventana se cierre inmediatamente.Salida:
python tangentpoly.py <<< "20, 6, 30"
:python tangentpoly.py <<< "100, 8, 200"
:fuente
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
440483No voy a ganar ningún premio con este, pero me gusta dibujar imágenes :)
Editar improperio! Acabo de notar que me equivoqué por los polígonos dibujados a través del círculo. Fijo a un costo.
Ejecutado con las siguientes variables
Ejecutar en SQL Server Management Studio 2012+ devolverá lo siguiente en la pestaña de resultados espaciales.
Con
con
Ampliado
fuente
MATLAB - 233 bytes
Salida de función de muestra para
n = 8, r = 4, l = 6
(ejes incluidos para indicar la longitud de la unidad):Salida de función de muestra para
n = 1024, r = 4, l = 2
:fuente
HTML + JavaScript (E6) 298
Para probar, guárdelo como un archivo html y ábralo con Firefox. Inserte los parámetros r, n, l en el campo de entrada, separados por comas, luego separe.
O prueba jsfiddle
Salida de muestra
fuente