filenametemplate "%j-%c.mps"; % Original comment in the METAFONT version of the MITRE logo. %% The MITRE logo version 1.1 released 11/16/89. %% Created by Richard Shaeff --- 1981 %% Shaeff Design Inc, Needham, MA %% %% Programmed in METAFONT by John D. Ramsdell --- November 1989 %% The MITRE Corporation, Bedford, MA %% Copyright 1989 by The MITRE Corporation. %% Richard Shaeff's original design was done by creating an %% outline. Therefore, this METAFONT version generates letters %% by filling an outlined region. %% The program expects ht# and only ht# to be defined in a %% parameter file. All other parameters are derived from this %% one. This is in conformance with the MITRE policy which states %% that the logo may be changed only by linearly scaling all of %% the logo's dimensions. % The single parameter in METAPOST is h. h=15pt; %% Note: %% Measurements from the original design and are in inches. %% The height of the logo is 4.25 inches and that height is %% used to scale all dimensions. %% %% MITRE blue is Pantone Matching System (PMS) 293 Blue, with an RGB %% value of (0, 81, 186). prologue:=1; I_w = 0.87500/4.25h; % I width. (7/8in) T_bar_h = 0.78125/4.25h; % T bar height. (25/32in) T_lft_w = 1.03125/4.25h; % Left T bar. (1 1/32in) T_rt_w = 1.00000/4.25h; % Right T bar. (1in) E_gap_h = 0.93750/4.25h; % Upper E gap. (15/16in) E_bar_shrink_h = 0.06250/4.25h; % Mid bar shrink. (1/16in) E_bar_w = 1.56250/4.25h; % E bar width. (1 9/16in) R_tail_a = 125; % R tail angle. M_vee_h = 1.62500/4.25h; % M vee height. (1 5/8in) M_vee_a = 70; % M vee angle. M_edge_a = 100; % M edge angle. M_w = 5.25000/4.25h; % M width. (5 1/4in) skip_w = 0.12500/4.25h; % Distance between T and R. % (1/8in) s = max(1, round(skip_w)); % Rounded interletter space. color mitreblue; mitreblue = (0,70/255,174/255); % MITRE blue PMS 293 Blue def draw_M(expr o) = begingroup save x, y; w = M_w + skip_w; x1 = o; y2 = y3 = y5 = y6 = h; y4 = h - y12 = h - y9 = M_vee_h; % The vee heights are the same. y1 = y13 = y11 = y10 = y8 = y7 = 0; x13 = x1 + I_w; x7 = w - max(1, round(.5skip_w)); x8 = x7 - I_w; x3 - x2 = x6 - x5; % Top edges widths are the same. x5 - x2 = x10 - x1; % A strange fact---measure it! z6 = z7 + whatever * dir M_edge_a; % The right side has all nice z9 = z8 + whatever * dir M_edge_a; % and neat angles defining it. z10 = z9 + whatever * dir M_vee_a; z4 = (-I_w, 0) + whatever[z10,z9]; % Width of right diagonal is I_w. z5 = z4 + whatever * dir M_vee_a; z12 = z13 + whatever * (z2 - z1); z11 = z12 + whatever * (z3 - z4); % The width of the left diagonal is only approximately I_w. % The following is only "almost" true. % z4 = (I_w, 0) + whatever[z11,z12]; fill z1--z2--z3--z4--z5--z6--z7 & z7--z8--z9--z10--z11--z12--z13--cycle withcolor mitreblue; w endgroup; enddef; def draw_I(expr o) = begingroup save x, y; y2 = y3 = h; y1 = y4 = 0; x1 = x2 = o; x3 = x4 = o + round(I_w); fill z1--z2--z3--z4--cycle withcolor mitreblue; x3 + s endgroup; enddef; def draw_T(expr o) = begingroup; save x, y; y4 = y5 = h; y3 = y2 = y7 = y6 = h - T_bar_h; y1 = y8 = 0; x3 = x4 = o; x2 = x1 = o + round(T_lft_w); x7 = x8 = o + round(T_lft_w + I_w); x6 = x5 = o + round(T_lft_w + I_w + T_rt_w); fill z1--z2--z3--z4--z5--z6--z7--z8--cycle withcolor mitreblue; x6 + s endgroup; enddef; def draw_R(expr o) = begingroup; save x, y; y2 = y3 = h; y10 = y11 = h - T_bar_h; % y10, y8, y5, y3 must be integers. y9 = y4 = y10 - .5E_gap_h; % They help determine the position y7 = y15 = y8 = y10 - E_gap_h; % of horizontal tangents to curves. y6 = y5 = y7 - (T_bar_h - E_bar_shrink_h); y1 = y12 = y13 = y16 = 0; x1 = x2 = o; x11 = x12 = o + round(I_w); % The space in the "R" must be the x7 = x6 = x14 = x11 + s; % same as the interletter space. x3 = x10 = x8 = x5 = o + I_w + y7 - y 14; % The location of the tail x13 = x3 + .5E_gap_h; % (x13) must not be rounded or % METAFONT cannot solve the equations. z14 = z13 + whatever * dir R_tail_a; z16 = (x13+I_w+skip_w, skip_w) + whatever * dir R_tail_a; z15 = z16 + whatever * dir R_tail_a; x9 = round(x13); % x4 and x9 determine vertical tangents x4 = round(x13 + I_w); % so they must be integers. fill z1--z2--z3 & z3{z3-z2}..z4{z5-z3}..{z6-z5}z5 & z5--z6--z7--z8 & z8{z8-z7}..z9{z10-z8}..{z11-z10}z10 & z10--z11--z12--cycle withcolor mitreblue; % "R" Tail fill z13--z14--z7--z15--z16--cycle withcolor mitreblue; x4 + s endgroup; enddef; def draw_E(expr o) = begingroup; save x, y; y2 = y3 = h; y5 = y4 = h - T_bar_h; y6 = y7 = y5 - E_gap_h; y9 = y8 = y6 - (T_bar_h - E_bar_shrink_h); % Notice that the lower bar is bigger than the upper one. y10 = y11 = T_bar_h + E_bar_shrink_h; y1 = y12 = 0; x1 = x2 = o; x5 = x6 = x9 = x10 = o + round(I_w); x3 = x4 = x7 = x8 = x11 = x12 = o + round(I_w + E_bar_w); fill z1--z2--z3--z4--z5--z6--z7--z8 & z8--z9--z10--z11--z12--cycle withcolor mitreblue; x3 + max(1, round(.5skip_w)) endgroup; enddef; beginfig(0); x1 = draw_M(0); x2 = draw_I(x1); x3 = draw_T(x2); x4 = draw_R(x3); x5 = draw_E(x4); endfig; bye;