%%%% cubd_02.ldf
%%%% Created by Laurence D. Finston (LDF) Fri Dec 16 16:30:20 CET 2005
%% * (1) Copyright and License.
%%%% This file is part of GNU 3DLDF, a package for three-dimensional drawing.
%%%% Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Free Software Foundation
%%%% GNU 3DLDF is free software; you can redistribute it and/or modify
%%%% it under the terms of the GNU General Public License as published by
%%%% the Free Software Foundation; either version 3 of the License, or
%%%% (at your option) any later version.
%%%% GNU 3DLDF is distributed in the hope that it will be useful,
%%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%%%% GNU General Public License for more details.
%%%% You should have received a copy of the GNU General Public License
%%%% along with GNU 3DLDF; if not, write to the Free Software
%%%% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
%%%% GNU 3DLDF is a GNU package.
%%%% It is part of the GNU Project of the
%%%% Free Software Foundation
%%%% and is published under the GNU General Public License.
%%%% See the website http://www.gnu.org
%%%% for more information.
%%%% GNU 3DLDF is available for downloading from
%%%% http://www.gnu.org/software/3dldf/LDF.html.
%%%% Please send bug reports to Laurence.Finston@gmx.de
%%%% The mailing list help-3dldf@gnu.org is available for people to
%%%% ask other users for help.
%%%% The mailing list info-3dldf@gnu.org is for the maintainer of
%%%% GNU 3DLDF to send announcements to users.
%%%% To subscribe to these mailing lists, send an
%%%% email with ``subscribe '' as the subject.
%%%% The author can be contacted at:
%%%% Laurence D. Finston
%%%% c/o The Free Software Foundation, Inc.
%%%% 51 Franklin St, Fifth Floor
%%%% Boston, MA 02110-1301
%%%% USA
%%%% Laurence.Finston@gmx.de
%% *** (3) The intersection points of a linear `path' and a `cuboid'.
%% LDF 2005.12.16.
verbatim_metapost "verbatimtex \magnification=\magstep5 etex";
pickup pencircle scaled (.75mm, .75mm);
focus f;
set f with_position (-10, 15, -30) with_direction (-10, 15, 100) with_distance 20;
picture save_picture;
pen dot_pen;
dot_pen := pencircle scaled (2mm, 2mm);
beginfig(1);
cuboid c;
w := 20;
h := 16;
d := 10;
c := unit_cuboid scaled (w, h, d) rotated (15, 15);
draw c;
path q[];
q0 := ((-12, -12, -2) -- (12, 12, 2)) shifted (1, 1, 1);
draw q0;
bool_point_vector bpv;
bpv := c intersection_points q0;
point p[];
p0 := bpv0;
p1 := bpv1;
drawdot p0 with_pen dot_pen with_color blue;
drawdot p1 with_pen dot_pen with_color blue;
label.lrt("$i_0$", p0);
label.lrt("$i_1$", p1);
save_picture := current_picture;
endfig with_focus f no_sort;
point label_pt;
label_pt := (0, -5);
beginfig(2);
output save_picture with_projection parallel_x_z;
%label("Parallel Projection, X-Z Plane", label_pt);
endfig with_projection parallel_x_y;
beginfig(3);
output save_picture with_projection parallel_x_y;
%label("Parallel Projection, X-Y Plane", label_pt);
endfig with_projection parallel_x_y;
beginfig(4);
output save_picture with_projection parallel_z_y;
%label("Parallel Projection, Z-Y Plane", label_pt);
endfig with_projection parallel_x_y;
verbatim_metapost "end";
end;