问题

问题

问题

我最近在这里问了一个问题:如何在圆环表面绘制点格?

我有两个答案,但在我的计算机上都无法正确显示。

它们看起来应该是这样的:

给定图像

圆环

圆环2

但它们实际上看起来像:

渲染图像

最终圆环

最终圆环

我已将代码附在本文末尾。

问题

看起来实体表面并没有像它们应该的那样阻挡稍后渲染的线条,而是箭头被层叠在圆环图形的顶部。我进行了大量搜索,但似乎无法在任何地方找到答案。

原始代码

致谢亚历克斯 \documentclass{独立} \usepackage{渐近线}

\begin{document}

\begin{asy}[width=10cm,height=10cm]
import graph3;
import three;

size3(200);
currentprojection=orthographic(3,3,5);
currentlight=light(gray(0.4),specularfactor=3,viewport=true,
           (-0.5,-0.25,0.45),(0.5,-0.5,0.5),(0.5,0.5,0.75));

int nb = 20, ns = 10;
real rb = 5.0, rs = 2.0;

triple torus(pair z) {

  return ((rb + rs*cos(2*pi*z.x/ns))*cos(2*pi*z.y/nb),
      (rb + rs*cos(2*pi*z.x/ns))*sin(2*pi*z.y/nb),
      rs*sin(2*pi*z.x/ns));

}

surface site = scale3(0.1)*unitsphere;

for(int k1=0; k1<ns; ++k1) {
  for(int k2=0; k2<nb; ++k2) {
    draw(surface(torus((k1,k2))--torus((k1+1,k2))--torus((k1+1,k2+1))--torus((k1,k2+1))--cycle),
     lightgray);
    draw(torus((k1,k2))--torus((k1+1,k2)),Arrow3);
    draw(torus((k1,k2))--torus((k1,k2+1)),Arrow3);
    draw(shift(torus((k1,k2)))*site,red);
  }
}

\end{asy}

\end{document}

致谢g-kov

size(200);
import graph3;

pen surfPen=rgb(1,0.7,0);
pen xarcPen=deepblue+0.7bp;
pen yarcPen=deepred+0.7bp;

currentprojection=perspective(5,4,4);

real R=2;
real a=1;

triple fs(pair t) {
  return ((R+a*Cos(t.y))*Cos(t.x),(R+a*Cos(t.y))*Sin(t.x),a*Sin(t.y));
}

surface s=surface(fs,(0,0),(360,360),8,8,Spline);
draw(s,surfPen,render(compression=Low,merge=true));

int m=20;
int n=10;
real arcFactor=0.85;

pair p,q;

for(int i=1;i<=n;++i){
  for(int j=0;j<m;++j){
    p=(j*360/m,(i%n)*360/n);
    q=(((j+arcFactor)%m)*360/m,i*360/n);
    draw(fs(p)..fs((p+q)/2)..fs(q),xarcPen,Arrow3(size=4));
    q=(j*360/m,((i%n)-arcFactor)*360/n);
    draw(fs(p)..fs((p+q)/2)..fs(q),yarcPen,Arrow3(size=3));
    dot(fs(p));
  }
}

我按照以下方式修改了两个脚本,以使它们以正确的方向呈现:第一个脚本:

... for(int k1=ns; k1>0; --k1) ...

第二个脚本:

No Modifications.

答案1

我的问题是 texstudio 附带的 asymptote 的默认版本(或在 ubuntu 存储库中)不支持渲染。

当使用该-render=4标志时,我收到警告:

runtime: to support onscreen rendering, please install glut library, run ./configure, and recompile

解决这个问题的方法是安装以下内容:

sudo apt-get install freeglut3-dev libz-dev libosmesa-dev libfftw3-dev libfftw3-doc texi2dvi

并通过以下方式从源代码进行编译:

./configure
make
make install

配置完成后你还会被要求

wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2d.tar.gz

在重新运行并继续之前您应该这样做./configure

运行渐近线:/usr/bin/asy -f pdf -noprc -render=-1 torus-latice.asy然后顺利工作。

相关内容