我想画出正方形欧几里得渐近线扩张的图像。一个正方形,另一个正方形的角位于前一个正方形的中点上。
settings.outformat="pdf";
include graph;
include math;
import geometry;
size(11cm,0);
pen dBlack=rgb(16/255, 15/255, 13/255);
pen pp=1.1bp+dBlack; //
pair A=(-1,-1), B=(1,-1), C=(1,1), D=(-1,1);
void drawsquare(pair A, pair B, pair C, pair D, int n)
{
if (n == 0) {draw(A--B);}
else{
draw(A--B--C--D--cycle,pp);
pair A1= midpoint(A--B);
pair B1= midpoint(B--C);
pair C1= midpoint(C--D);
pair D1= midpoint(D--A);
drawsquare(A1,B1,C1,D1,n-1);}}
drawsquare(A,B,C,D,10);
shipout(bbox(2mm,invisible));
答案1
你的图形相当简单,所以有很多种画法。这是一个 TikZ 解决方案
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=2.5]
\def\n{10}
\def\mybox{(1,1) rectangle (-1,-1)}
\foreach \i in {0,...,\n}
\draw[scale=1/sqrt(2^\i),rotate=\i*45] \mybox;
\end{tikzpicture}
\end{document}
这是 Asymptote 1
// http://asymptote.ualberta.ca/
unitsize(2cm);
int n=12;
path mybox=box((-1,-1),(1,1));
for (int i=0; i<n; ++i)
draw (scale(1/sqrt(2^i))*rotate(45*i)*mybox,blue);
shipout(bbox(2mm,invisible));