Asíntota: ¿Por qué los objetos más cercanos a la cámara son más pequeños?

Asíntota: ¿Por qué los objetos más cercanos a la cámara son más pequeños?

En el siguiente ejemplo puedes ver que el átomo que está más cerca de la cámara, en realidad es más pequeño que el resto, aunque debería ser al revés. ¿No debería?

Aquí el MWE:

size(700);
import solids;
import texcolors;
import three;

currentprojection=orthographic (
camera=(8,4,4),
up=(0,0,1),
target=(2,2,2),
zoom=1.0
);

// save predefined 2D orientation vectors
pair NN=N;
pair SS=S;
pair EE=E;
pair WW=W;

//%Atom positions

triple Atom1 = (-1.1547, -2., 3.26599);
triple Atom2 = (-1.1547, 2., 3.26599);
triple Atom3 = (2.3094, 0., 3.26599);
triple Atom4 = (0,0,0);

triple[] atoms={
    Atom1,Atom2,Atom3,Atom4,
};

draw((1.3094,0,2.26599)--(3.3094,0,4.26599),(7bp)+green,Arrow3(size=30bp));

real cylR=0.062;

material baseM = material(gray(0.5), black, gray(0.6), black);

void Connect(guide3 g){
    draw(surface(
        cylinder(
            point(g,0),cylR,arclength(g),point(g,1)-point(g,0)
        )),baseM
    );
}

//%connections from Atom1 to all others
Connect(Atom1--Atom2);
Connect(Atom1--Atom3);
Connect(Atom1--Atom4);


//%connections from Atom2 to Atom2+n
Connect(Atom2--Atom3);
Connect(Atom2--Atom4);


//%connections from Atom3 to Atom4
Connect(Atom3--Atom4);


material m  = material(gray(0.5), black, RoyalBlue, black);
// material m2 = material(

void drawSpheres(triple[] C, real R, pen p=currentpen){
    for(int i=0;i<C.length;++i){
        draw(surface(sphere(C[i],R)),m);
    }
}


 drawSpheres(atoms,0.5,RoyalBlue);

ingrese la descripción de la imagen aquí

Respuesta1

En realidad son del mismo tamaño. Cuanto más cerca se ve, más pequeño se ve debido a una ilusión óptica. Su cerebro "asume" que es más pequeño porque está más cerca, pero abarca el mismo ángulo en su campo visual.

Reemplace "ortográfico" con "perspectiva" para agrandar el más cercano.

ingrese la descripción de la imagen aquí

información relacionada