TransWikia.com

How to draw IMO level geometry pictures?

TeX - LaTeX Asked on December 17, 2021

What would you suggest for me as I would like to learn how to draw geometric pictures appeared on mathematical competitions like IMO. For example, like this picture here:

enter image description here

2 Answers

This handout by Evan Chen describes two possible workflows, one using GeoGebra and one using Asymptote. There is also a thorough worked example. I've tried out the GeoGebra workflow and it worked for me, but Asymptote is even better because it integrates with TeX; however, it seems slightly more time-consuming.

Answered by Brian Z on December 17, 2021

Plain Metapost has all of the tools you need to do elegant geometrical diagrams like this.

enter image description here

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

% define the radius
r = 100;

% define four points spaced arbitrarily on a circle of radius r;
z1 = (r,0) rotated 140; 
z2 = (r,0) rotated 72; 
z3 = (r,0) rotated 3;
z4 = (r,0) rotated -120;

% define the points on the circle half way between these points
% do this by finding the angle of the vector sum of the two points
z11 = (r,0) rotated angle (z1 + z2);
z12 = (r,0) rotated angle (z2 + z3);
z13 = (r,0) rotated angle (z3 + z4);
z14 = (r,0) rotated angle (z4 + z1);

% find the intersection of the lines between opposite mid points
z0 = (z11--z13) intersectionpoint (z12--z14);

% draw the circle in grey 
draw fullcircle scaled 2r withcolor .7 white;

% draw some radius lines and a chord in pink
drawoptions(withcolor withcolor .37 red + .5 white);
forsuffixes $=11,12,13,14: 
  draw origin -- z$; 
endfor
draw z11 -- z14;
drawoptions();

% mark the right angle
draw unitsquare scaled 5 rotated angle (z12-z14) shifted z0 withcolor .7 white;

% draw A-B-C-D and P-R and S-Q
draw z11 -- z13; draw z12 -- z14;
draw z1 -- z2 -- z3 -- z4 -- cycle;

% label the points, the "scaled" trick works because everything is centred at origin
s = 13/12;
label("A", z1 scaled s);
label("B", z2 scaled s);
label("C", z3 scaled s);
label("D", z4 scaled s);

label("P", z11 scaled s);
label("Q", z12 scaled s);
label("R", z13 scaled s);
label("S", z14 scaled s);

label("I",z0 shifted (7,-3));

endfig;
end.

Answered by Thruston on December 17, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP