渐近线的点在 3D 中看起来很奇怪

渐近线的点在 3D 中看起来很奇怪

我一直在尝试在 3D 环境中绘制带有渐近线的晶体结构晶格。我认为顶点应该以dot命令的形式绘制。但是,使用投影时currentprojection=obliqueX,点不是圆形的。

还有人有更好的解决方案吗?

最小设置

settings.render=16;
settings.prc = false;
import three;
size(4cm,0);
currentprojection=obliqueX;
dotfactor=10;
dot(O);
shipout(scale(4.0) *currentpicture.fit());

输出

答案1

球体 x^2+y^2+z^2=1 在斜X投影中看起来不是圆形的,该投影映射 (x,y,z) -> (yx/2,zx/2)

为了理解这一点,请注意 (0,0,0) 映射到 (0,0),但 (1,0,0) 映射到 (-1/2,-1/2),(0,1,0) 映射到 (1,0),它们与 (0,0) 的距离不等。

改用正交投影。

答案2

好的,obliqueX 的正常行为不是圆点。如有必要,可以通过相对于 x 球体缩放来获得(几乎)圆点。为了获得独立于图片大小的尺寸,我创建了一个pic1可以缩放并包含在图片任意点的add(pic1.fit3(),..)

请找到以下代码

    settings.render=16;
    settings.prc = false;
    import three;
    size(4cm,0);
    currentprojection=obliqueX;
    dotfactor=10;
    draw(unitsquare3);
    dot(O);
    picture pic1;
    size(pic1,1cm);
    // to avoid shininess nolight
    draw(pic1,xscale3(1/10)*scale3(1/4)*unitsphere,nolight);

    add(scale3(10)*pic1.fit3(),(0,0.2,0));

我添加了一个全局变量scale3(1/4),以便scale3(10)*pic1.fit3()给出一个与点因子为 10 的点近似大小的点。

图片

在此处输入图片描述

结果xscale3(1/10)几乎完美,表面是一个扁平的球体。第一次尝试是这样的,xscale3(1/4)但结果并不完美。当然,如果你要制作一张更复杂的多色图片,球体是扁平的这一事实可能会产生不真实的图片!

另一个解决方案:缩放标签(“\textbullet”),放置一个方向正确的单位盘......

相关内容