18namespace layer5_applications {
19namespace user_interface {
27 f_create_points_on_quartic =
FALSE;
30 f_create_points_on_parabola =
FALSE;
36 f_smooth_curve =
FALSE;
39 smooth_curve_t_min = 0;
40 smooth_curve_t_max = 0;
41 smooth_curve_boundary = 0;
46 f_create_spread =
FALSE;
47 Spread_create_description =
FALSE;
50 f_make_table_of_surfaces =
FALSE;
52 f_create_surface_reports =
FALSE;
55 f_create_surface_atlas =
FALSE;
56 create_surface_atlas_q_max = 0;
58 f_create_dickson_atlas =
FALSE;
68 std::string *argv,
int i,
int verbose_level)
72 if (ST.
stringcmp(argv[i],
"-create_points_on_quartic") == 0) {
73 cout <<
"-create_points_on_quartic <double : desired_distance>" << endl;
75 else if (ST.
stringcmp(argv[i],
"-create_points_on_parabola") == 0) {
76 cout <<
"-create_points_on_parabola <double : desired_distance> <double : a> <double : b> <double : c>" << endl;
78 else if (ST.
stringcmp(argv[i],
"-smooth_curve") == 0) {
79 cout <<
"-smooth_curve <string : label> <double : desired_distance> <int : N> <double : boundary> <double : t_min> <double : t_max> <function>" << endl;
81 else if (ST.
stringcmp(argv[i],
"-create_spread") == 0) {
82 cout <<
"-create_spread <description>" << endl;
84 else if (ST.
stringcmp(argv[i],
"-make_table_of_surfaces") == 0) {
85 cout <<
"-make_table_of_surfaces " << endl;
87 else if (ST.
stringcmp(argv[i],
"-create_surface_reports") == 0) {
88 cout <<
"-create_surface_reports <string : field orders>" << endl;
90 else if (ST.
stringcmp(argv[i],
"-create_surface_atlas") == 0) {
91 cout <<
"-create_surface_atlas <int : q_max>" << endl;
93 else if (ST.
stringcmp(argv[i],
"-create_dickson_atlas") == 0) {
94 cout <<
"-create_dickson_atlas" << endl;
101 std::string *argv,
int i,
int verbose_level)
108 if (ST.
stringcmp(argv[i],
"-create_points_on_quartic") == 0) {
111 else if (ST.
stringcmp(argv[i],
"-create_points_on_parabola") == 0) {
114 else if (ST.
stringcmp(argv[i],
"-smooth_curve") == 0) {
117 else if (ST.
stringcmp(argv[i],
"-create_spread") == 0) {
120 else if (ST.
stringcmp(argv[i],
"-make_table_of_surfaces") == 0) {
123 else if (ST.
stringcmp(argv[i],
"-create_surface_reports") == 0) {
126 else if (ST.
stringcmp(argv[i],
"-create_surface_atlas") == 0) {
129 else if (ST.
stringcmp(argv[i],
"-create_dickson_atlas") == 0) {
136 std::string *argv,
int &i,
int verbose_level)
138 int f_v = (verbose_level >= 1);
142 cout <<
"interface_projective::read_arguments" << endl;
145 cout <<
"interface_projective::read_arguments the next argument is " << argv[i] << endl;
147 if (ST.
stringcmp(argv[i],
"-create_points_on_quartic") == 0) {
148 f_create_points_on_quartic =
TRUE;
149 desired_distance = ST.
strtof(argv[++i]);
151 cout <<
"-create_points_on_quartic " << desired_distance << endl;
154 else if (ST.
stringcmp(argv[i],
"-create_points_on_parabola") == 0) {
155 f_create_points_on_parabola =
TRUE;
156 desired_distance = ST.
strtof(argv[++i]);
157 parabola_N = ST.
strtoi(argv[++i]);
158 parabola_a = ST.
strtof(argv[++i]);
159 parabola_b = ST.
strtof(argv[++i]);
160 parabola_c = ST.
strtof(argv[++i]);
162 cout <<
"-create_points_on_parabola " << desired_distance <<
" "
163 << parabola_N <<
" " << parabola_a <<
" "
164 << parabola_b <<
" " << parabola_c << endl;
167 else if (ST.
stringcmp(argv[i],
"-smooth_curve") == 0) {
168 f_smooth_curve =
TRUE;
169 smooth_curve_label.assign(argv[++i]);
170 desired_distance = ST.
strtof(argv[++i]);
171 smooth_curve_N = ST.
strtoi(argv[++i]);
172 smooth_curve_boundary = ST.
strtof(argv[++i]);
173 smooth_curve_t_min = ST.
strtof(argv[++i]);
174 smooth_curve_t_max = ST.
strtof(argv[++i]);
179 argv + i + 1, verbose_level);
182 cout <<
"-smooth_curve "
183 << smooth_curve_label <<
" "
184 << desired_distance <<
" "
185 << smooth_curve_N <<
" "
186 << smooth_curve_boundary <<
" "
187 << smooth_curve_t_min <<
" "
188 << smooth_curve_t_max <<
" "
192 else if (ST.
stringcmp(argv[i],
"-create_spread") == 0) {
193 f_create_spread =
TRUE;
195 cout <<
"-create_spread" << endl;
200 argv + i + 1, verbose_level);
202 cout <<
"interface_combinatorics::read_arguments finished "
203 "reading -create_spread" << endl;
204 cout <<
"i = " << i << endl;
205 cout <<
"argc = " << argc << endl;
207 cout <<
"next argument is " << argv[i] << endl;
209 cout <<
"-create_spread" << endl;
210 Spread_create_description->
print();
213 else if (ST.
stringcmp(argv[i],
"-transform") == 0) {
218 transform_coeffs.push_back(s);
219 f_inverse_transform.push_back(
FALSE);
221 cout <<
"-transform " << transform_coeffs[transform_coeffs.size() - 1] << endl;
224 else if (ST.
stringcmp(argv[i],
"-transform_inverse") == 0) {
228 transform_coeffs.push_back(s);
229 f_inverse_transform.push_back(
TRUE);
231 cout <<
"-transform_inverse " << transform_coeffs[transform_coeffs.size() - 1] << endl;
234 else if (ST.
stringcmp(argv[i],
"-make_table_of_surfaces") == 0) {
235 f_make_table_of_surfaces =
TRUE;
237 cout <<
"-make_table_of_surfaces" << endl;
240 else if (ST.
stringcmp(argv[i],
"-create_surface_atlas") == 0) {
241 f_create_surface_atlas =
TRUE;
242 create_surface_atlas_q_max = ST.
strtoi(argv[++i]);
244 cout <<
"-create_surface_atlas " << create_surface_atlas_q_max << endl;
247 else if (ST.
stringcmp(argv[i],
"-create_surface_reports") == 0) {
248 f_create_surface_reports =
TRUE;
249 create_surface_reports_field_orders_text.assign(argv[++i]);
251 cout <<
"-create_surface_reports " << create_surface_reports_field_orders_text << endl;
254 else if (ST.
stringcmp(argv[i],
"-create_dickson_atlas") == 0) {
255 f_create_dickson_atlas =
TRUE;
257 cout <<
"-create_dickson_atlas " << endl;
261 cout <<
"interface_projective::read_arguments done" << endl;
267 if (f_create_points_on_quartic) {
268 cout <<
"-create_points_on_quartic " << desired_distance << endl;
270 if (f_create_points_on_parabola) {
271 cout <<
"-create_points_on_parabola " << desired_distance <<
" "
272 << parabola_N <<
" " << parabola_a <<
" "
273 << parabola_b <<
" " << parabola_c << endl;
275 if (f_smooth_curve) {
276 cout <<
"-smooth_curve "
277 << smooth_curve_label <<
" "
278 << desired_distance <<
" "
279 << smooth_curve_N <<
" "
280 << smooth_curve_boundary <<
" "
281 << smooth_curve_t_min <<
" "
282 << smooth_curve_t_max <<
" "
286 if (f_create_spread) {
287 cout <<
"-create_spread" << endl;
288 Spread_create_description->
print();
293 for (i = 0; i < transform_coeffs.size(); i++) {
294 if (f_inverse_transform[i]) {
295 cout <<
"-transform_inverse " << transform_coeffs[i] << endl;
298 cout <<
"-transform " << transform_coeffs[i] << endl;
302 if (f_make_table_of_surfaces) {
303 cout <<
"-make_table_of_surfaces" << endl;
305 if (f_create_surface_atlas) {
306 cout <<
"-create_surface_atlas " << create_surface_atlas_q_max << endl;
308 if (f_create_surface_reports) {
309 cout <<
"-create_surface_reports " << create_surface_reports_field_orders_text << endl;
311 if (f_create_dickson_atlas) {
312 cout <<
"-create_dickson_atlas " << endl;
320 int f_v = (verbose_level >= 1);
323 cout <<
"interface_projective::worker" << endl;
326 if (f_create_points_on_quartic) {
332 else if (f_create_points_on_parabola) {
337 parabola_N, parabola_a, parabola_b, parabola_c, verbose_level);
339 else if (f_smooth_curve) {
344 desired_distance, smooth_curve_N,
345 smooth_curve_t_min, smooth_curve_t_max, smooth_curve_boundary,
346 FP_descr, verbose_level);
348 else if (f_create_spread) {
355 else if (f_make_table_of_surfaces) {
362 else if (f_create_surface_reports) {
370 else if (f_create_surface_atlas) {
378 else if (f_create_dickson_atlas) {
390 cout <<
"interface_projective::worker done" << endl;
400 int f_v = (verbose_level >= 1);
403 cout <<
"interface_projective::do_create_spread" << endl;
412 cout <<
"before SC->init" << endl;
414 SC->
init(Descr, verbose_level);
416 cout <<
"after SC->init" << endl;
421 cout <<
"before SC->apply_transformations" << endl;
424 f_inverse_transform, verbose_level);
426 cout <<
"after SC->apply_transformations" << endl;
441 cout <<
"We have created the following spread set:" << endl;
442 cout <<
"$$" << endl;
445 cout <<
"$$" << endl;
448 cout <<
"The stabilizer is generated by:" << endl;
462 cout <<
"interface_projective::do_create_spread done" << endl;
cubic surfaces in PG(3,q) with 27 lines
void make_table_of_surfaces(int verbose_level)
description of a function in reverse polish notation from the command line
int read_arguments(int argc, std::string *argv, int verbose_level)
a catch-all class for things related to 2D graphics
void do_create_points_on_parabola(double desired_distance, int N, double a, double b, double c, int verbose_level)
void do_create_points_on_quartic(double desired_distance, int verbose_level)
void do_smooth_curve(std::string &curve_label, double desired_distance, int N, double t_min, double t_max, double boundary, function_polish_description *FP_descr, int verbose_level)
interface to create latex output files
void lint_set_print_tex(std::ostream &ost, long int *v, int len)
a permutation group in a fixed action.
void print_generators_tex()
high level functions for cubic surfaces
void do_create_surface_atlas(int q_max, int verbose_level)
void do_create_dickson_atlas(int verbose_level)
void do_create_surface_reports(std::string &field_orders_text, int verbose_level)
to describe the construction of a known spread from the command line
int read_arguments(int argc, std::string *argv, int verbose_level)
to create a known spread using a description from class spread_create_description
void init(spread_create_description *Descr, int verbose_level)
groups::strong_generators * Sg
void apply_transformations(std::vector< std::string > transform_coeffs, std::vector< int > f_inverse_transform, int verbose_level)
int recognize_keyword(int argc, std::string *argv, int i, int verbose_level)
void print_help(int argc, std::string *argv, int i, int verbose_level)
void do_create_spread(spreads::spread_create_description *Descr, int verbose_level)
void read_arguments(int argc, std::string *argv, int &i, int verbose_level)
void worker(int verbose_level)
the orbiter library for the classification of combinatorial objects