如何用渐近线画不规则十一边形

如何用渐近线画不规则十一边形

抱歉,如果这是一个重复的问题,但我该如何绘制一个不规律的用渐近线画十一边形?我是新手,我知道如何画一个规则的,但不知道如何画一个不规则的。

[asy]
size(9cm);
pair cis(real magni, real argu) { return (magni*cos(argu*pi/180),magni*sin(argu*pi/180)); }

for(int b=1; b<2; b+=1){
for(int a=6; a<7; a+=1){
int n=a+5*b;
pair ctr=(2.5*a,-2.5*b);
real r=1; pair offs=(0,0);
if(n==3) {r=2/3; offs=(0,-1/3);}
for(int i=1; i<2*n; i+=2){
draw(ctr+cis(r/cos(pi/n),270+(i-2)*180/n)+offs---ctr+cis(r/cos(pi/n),270+i*180/n)+offs,blue);
};
};
};
[/asy]

这是我的正十一边形代码,但我不知道如何绘制不规则十一边形。谢谢!

答案1

相关问题可能是如何绘制周长相同的随机简单封闭平滑曲线?

使用 asymptote 和hull_pi.asy包,很容易得到随机点并创建相关的凸多边形。你可以hull_pi.asy在以下地址找到(非官方包)https://github.com/pivaldi/asymptote-packages/blob/master/hull_pi.asy

请找到可能的解决方案

    import hull_pi;
    size(10cm);
    // to have a different picture at each launch
    srand(seconds());

    pair[] cloud;
    int nbpt=11;

    path poly_point(pair [] a)
    {
    guide g;
    for (int i; i<size(a);++i)
    g=g--a[i];
    return g--cycle;
    }

    // Generate a first set of random points.
    for (int i=0; i < nbpt; ++i)
      cloud.push((10*unitrand(),10*unitrand()));

    int l=size(hull(cloud));
    while (l<11)
    {
    cloud.push((10*unitrand(),10*unitrand()));
    pair[] phull=hull(cloud);
    l=size(phull);
    }

    pair[] phull=hull(cloud);
    draw(poly_point(phull),1bp+blue);
    dot(phull,red);

结果

在此处输入图片描述

相关内容