/* -*-ePiX-*- */ #include "epix.h" #include "std_F.h" // include the custom header using namespace ePiX; // September 23, 2007 // // The instructions below assume you've copied this file and the // sample files std_F.cc and std_F.h into a directory where you // have write permission. // // To build std_F.cc, you'll need to run commands similar to // // g++ -I. -c std_F.cc // ar -ru libaff.a std_F.o // ranlib libaff.a // // Respectively, these compile std_F.cc into an object file, std_F.o; // create a static library named libaff.a containing the object code; // and create an index in libaff.a for the linker, so the library can // be used in external programs, such as the one built from this // source file. (On Mac OSX, you may need to run ranlib *after* moving // the library file to its permanent home.) // // You may give the library a different name, but it MUST begin "lib" // and have the extension ".a": "libblug.a" and "libaff-1.0.a" are all // right, but "mylib.a" or "libaff.test" are not. You refer to the // library by its name with "lib" and ".a" removed, as in "blug" or // "aff-1.0". // // To compile this source file (the one you're reading now), build // libaff.a as described above, then run the command // // epix -I. -L. -laff std_F.xp // // Files (such as this one) that use an external library cannot be // compiled from emacs, since there is no way to pass the required // options; they must be compiled at a shell prompt. // // Please consult the gcc documentation ("g++ --help") for information on // what each option does. // About this file: // // "F" is the first letter of the Roman alphabet that has no non-trivial // symmetries. // // std_F is a class for representing plane affine maps; please consult // the manual for general information of ePiX's plane affine map class. // int main() { picture(P(0,0), P(6,6), "4x4in"); begin(); degrees(); grid(6,6); std_F F1; // the standard F affine af1; // the identity map F1.draw(); // stretch along the main diagonal af1.rotate(45).v_scale(3).h_scale(0.75).rotate(-45); // flip over the main diagonal and translate af1.reflect(45).shift(pair(3,2)); // apply af, set style, and draw F1.map_by(af1).fill(Black(0.6)).backing(Blue(1.8)).draw(); std_F F2; affine af2; af2.rotate(60).scale(1.5).shift(pair(5,0)); F2.map_by(af2).backing(RGB(1,0.8,0.2)).fill(Green(0.6)).draw(); std_F F3; // define af3 by images of e1, e2, origin affine af3(pair(2-sqrt(3), 6), pair(2,3), pair(2,5)); F3.map_by(af3).backing(Black(0.4)).fill(White()).draw(); pst_format(); end(); }