欧几里得中的扩张,如何在渐近线中调用相同的函数

欧几里得中的扩张,如何在渐近线中调用相同的函数

我想画出正方形欧几里得渐近线扩张的图像。一个正方形,另一个正方形的角位于前一个正方形的中点上。

平方的欧几里得膨胀

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));

相关内容