7

In the following example you can see that the atom that is closest to the camera, is acutally smaller than the rest, even though it should be the other way around. Shouldn't it?

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

enter image description here

12

They are actually the same size. The closer one looks smaller due to an optical illusion. Your brain "assumes" it is smaller because it is closer but it spans the same angle in your visual field.

Replace "orthographic" with "perspective" to make the closer one larger.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.