metafont
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

cube9.mp
text/plain

Download raw (1.3 KB)

% Cube projections
% D. Roegel 23 January 2001
% roegel@loria.fr


input 3danim
output_res:=72;
drawing_scale:=2cm;

projection_type:=1;

%set_plane_(projection_plane)(point_null,vec_I,vec_J);
%set_plane_(projection_plane)(point_null,vec_I,vec_K);

vardef def_C(expr inst)=
  new_obj_points(inst,8); % 8 points
  set_C_points(inst);
enddef;

vardef set_C_points(expr inst)=
  set_point(1)(0,0,0);set_point(2)(0,0,1);
  set_point(3)(0,1,0);set_point(4)(0,1,1);
  set_point(5)(1,0,0);set_point(6)(1,0,1);
  set_point(7)(1,1,0);set_point(8)(1,1,1);
enddef;

vardef draw_C(expr inst)=
  draw_lines(1,2,4,3,1);
  draw_line(2,6);draw_line(4,8);draw_line(1,5);
  draw_lines(5,6,8);
  drawoptions(dashed evenly);
  draw_line(3,7);draw_lines(8,7,5);
  drawoptions();
enddef;

assign_obj("cube","C");

% Trimetric projection
i:=67;
beginfig(167);
  % Observator
  set_point_(Obs)(20*cosd(3.6*i),20*sind(3.6*i),6);
  Obs_phi:=90;Obs_dist:=2;point_of_view_obj("cube",8,Obs_phi);
  draw_obj("cube"); 
endfig;

% Isometric projection
isometric_projection(vec_I,vec_J,vec_K,pnt_obj("cube",8),Obs_dist,90);
  
beginfig(168);
  draw_obj("cube"); 
endfig;

% Dimetric projection  
dimetric_projection(vec_I,vec_J,vec_K,0.5,pnt_obj("cube",8),3*Obs_dist,90);
  
beginfig(169);
  draw_obj("cube"); 
endfig;
 
end.