This isn't specifically a ConTeXt question, but via it I've run into a
seemingly simple problem in METAPOST that I just can't solve. I'm
trying to draw a parallelogram by specifying: (1) the length of sides
parallel to the x-axis; (2) the total height of the figure; (3) one of
the interior angles. This is how I'm trying to solve it:
-----------------
% Draw a parallelogram, like so:
%
% z3 z2
% +-----+ ^
% / / |
% / / |
% / / |10 units
% /BL / |
% +-----+ v
% z0 z1
% <----->
% 5 units
%
% Interior angle BL = 87 degrees
beginfig(1);
z0 = origin; % bottom left
z1 = (5,0); % bottom right
y2 = y3 = 10; % shape is 10 units high
x2 - x3 = x1 - x0; % top edge is the same length as bottom edge
% We've completely specified z0 and z1;
% We know that the top edge is the same length and angle as the
bottom, but lies somewhere on y = 10;
% all we have to do is specify one angle and we have a complete parallelogram.
%
% The following should work as it provides the following information:
% the unit vector from z0 to z3 is at an angle 87 degrees
anticlockwise from (0,0) -- (1,0).
angle(z3-z0) = dir(87);
endfig;
end;
--------------------
This doesn't work; using the angle() function gives the error:
Not implemented: angle(unknown pair).
Strictly speaking, yes, z3 has an unknown x-coordinate at that time in
execution. But I am told that METAPOST is declarative, so I would
expect my line of code to mean: "set the x-coordinate of z3 such that
angle(z3-z0) = dir(87)". AFAICS that provides all the needed
information to draw the shape.
So, is there another way I can do what I want without falling into
low-level trig?
Best,
James