Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
Ah, lovely! Who knew there would be so many different solutions? I'm going to use Nicola's solution on this occasion, as it fits my thought process best -- but thanks to Troy as your solutions showed me some other things I didn't know. All the best, James On Fri, Feb 26, 2010 at 9:42 PM, Nicola wrote: > In article > <771da05a1002251718l55669a0co770b5a78bed84...@mail.gmail.com>, > James Fisher wrote: > >> 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. > > Curiously enough, nobody has posted a solution that uses 'whatever', so > here it is: > > z0 = origin; % bottom left > z1 = (5,0); % bottom right > y3 = y2 = 10; > z3 = z0 + whatever*dir(87); % z3 is obtained by starting at z0 and > % moving along dir(87) > z2-z1 = whatever*(z3-z0); % The line z1--z2 is parallel to z0--z3 > > That is, what you were trying to achieve: > > angle(z3-z0) = dir(87); > > can be written instead: > > z3 - z0 = whatever*dir(87); > > Nicola > > ___ > If your question is of interest to others as well, please add an entry to the > Wiki! > > maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : http://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
In article <771da05a1002251718l55669a0co770b5a78bed84...@mail.gmail.com>, James Fisher wrote: > 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. Curiously enough, nobody has posted a solution that uses 'whatever', so here it is: z0 = origin;% bottom left z1 = (5,0); % bottom right y3 = y2 = 10; z3 = z0 + whatever*dir(87); % z3 is obtained by starting at z0 and % moving along dir(87) z2-z1 = whatever*(z3-z0); % The line z1--z2 is parallel to z0--z3 That is, what you were trying to achieve: angle(z3-z0) = dir(87); can be written instead: z3 - z0 = whatever*dir(87); Nicola ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
James, How about this. BL:=87; z0=origin; z1=(5,0); z4=dir(BL); % Intermediate point z3=10/y4*z4; z2=z3+z1; or alternatively without having to define z4 BL:=87; z0=origin; z1=(5,0); z3=10/(ypart dir(BL))*dir(BL); z2=z3+z1; ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
Aha! That certainly works. I suspected I would have to fall back on "low-level" trig :). Many thanks! On Fri, Feb 26, 2010 at 1:44 AM, Troy Henderson wrote: > James, > > I apologize, but the previous information that I gave you was wrong. > Try this instead: > > z0 = origin; > z1 = (5,0); > BL:=87; > r:=10/sind(BL); > z3 = r*dir(BL); > z2 = z3-z0+z1; > > Troy > ___ > If your question is of interest to others as well, please add an entry to the > Wiki! > > maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://tex.aanhet.net > archive : http://foundry.supelec.fr/projects/contextrev/ > wiki : http://contextgarden.net > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
James, I apologize, but the previous information that I gave you was wrong. Try this instead: z0 = origin; z1 = (5,0); BL:=87; r:=10/sind(BL); z3 = r*dir(BL); z2 = z3-z0+z1; Troy ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
James, Try this: z0 = origin; z1 = (5,0); z3 = 10*dir(87); z2 = z3-z0+z1; Troy Henderson ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
[NTG-context] METAPOST -- specifying an unknown point coordinate by giving the angle from another known point
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: % % z3z2 % +-+ ^ %/ /| % / / | % / / |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 ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___