📄 chaos_analyser.c
字号:
{ 0, 0, 0}, /* black */ }; extern void exit(); DATA=dmatrix(0,50001,0,8); LYA_EXP=dmatrix(0,10001,1,8); set_angles(); xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL); cms = (Cms) xv_create((Frame)NULL, CMS, CMS_SIZE, 6, CMS_COLORS, colors, NULL); /************** Main Frame and Canvas ******************************/ frame = (Frame)xv_create((Frame)NULL, FRAME, FRAME_LABEL, "Signal Analysis tool", NULL); closed_image = (Server_image)xv_create((Frame)NULL, SERVER_IMAGE, SERVER_IMAGE_DEPTH, 1, XV_WIDTH, lor_icon_width, XV_HEIGHT, lor_icon_height, SERVER_IMAGE_X_BITS, lor_icon_bits, NULL); icon=(Icon)xv_create((Frame)NULL, ICON, ICON_IMAGE, closed_image, XV_WIDTH, lor_icon_width, XV_HEIGHT, lor_icon_height, XV_X, 100, XV_Y, 100, NULL); xv_set(frame,FRAME_ICON,icon,NULL); canvas = (Canvas)xv_create(frame, CANVAS, XV_WIDTH, 500, XV_HEIGHT, 500, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, repaint_proc, WIN_CMS, cms, NULL); canvas_win = (Window)xv_get(canvas_paint_window(canvas), XV_XID); panel = (Panel)xv_create(frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Quit", XV_X, 20, XV_Y, 5, PANEL_NOTIFY_PROC, exit, NULL); FR_BUT=(Panel_item)xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Freeze", PANEL_NOTIFY_PROC, freeze, XV_Y, 5, XV_X, 210, NULL); xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Step", PANEL_NOTIFY_PROC, step, XV_Y, 5, XV_X, 290, NULL); xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Reverse Direction", PANEL_NOTIFY_PROC, reverse, XV_Y, 5, XV_X, 80, NULL); xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Options/Utilities", PANEL_NOTIFY_PROC, options, XV_Y, 40, XV_X, 30, NULL); AXES_ON_OFF=(Panel_item)xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Axes off", PANEL_NOTIFY_PROC, show_axes, XV_Y, 40, XV_X, 175, NULL); xv_create(panel, PANEL_BUTTON, PANEL_LABEL_STRING, "Print", PANEL_NOTIFY_PROC, main_print, XV_Y, 40, XV_X, 280, NULL); (Panel_item)xv_create(panel, PANEL_TEXT, PANEL_LABEL_STRING, "New File : ", PANEL_VALUE, NULL, PANEL_VALUE_DISPLAY_LENGTH, 30, PANEL_VALUE_STORED_LENGTH, 50, PANEL_NOTIFY_PROC, get_name, NULL); M_SLIDER=(Panel_item)xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Time delay", PANEL_VALUE, 10, PANEL_MAX_VALUE, 100, PANEL_NOTIFY_PROC, m_delay, NULL); NUM_POINTS=(Panel_item)xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Number of Points ", PANEL_VALUE, 5000, PANEL_MAX_VALUE, 50000, PANEL_NOTIFY_PROC, number_points, NULL); POS_SLIDER=(Panel_item)xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Time Position ", PANEL_VALUE, 0, PANEL_SHOW_VALUE, FALSE, PANEL_MAX_VALUE, 50000, PANEL_NOTIFY_PROC, time_pos, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Magnification (%)", PANEL_VALUE, 100, PANEL_MAX_VALUE, 200, PANEL_NOTIFY_PROC, adjust_size, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Section Length", PANEL_VALUE, 150, PANEL_MAX_VALUE, 1000, PANEL_NOTIFY_PROC, adjust_length, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Ghost length", PANEL_VALUE, 200, PANEL_MAX_VALUE, 1000, PANEL_NOTIFY_PROC, adjust_ghost, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Increment Step", PANEL_VALUE, 1, PANEL_MAX_VALUE, 120, PANEL_NOTIFY_PROC, adjust_step, NULL); SPEED=(Panel_item)xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Animate speed", PANEL_VALUE, 0, PANEL_MAX_VALUE, 120, PANEL_NOTIFY_PROC, adjust_speed, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "angle 1 ", PANEL_VALUE, 45, PANEL_MAX_VALUE, 360, PANEL_NOTIFY_PROC, adjust_alpha, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "angle 2 ", PANEL_VALUE, 0, PANEL_MAX_VALUE, 360, PANEL_NOTIFY_PROC, adjust_beta, NULL); xv_create(panel, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "angle 3 ", PANEL_VALUE, 325, PANEL_MAX_VALUE, 360, PANEL_NOTIFY_PROC, adjust_gamma, NULL); window_fit(panel); window_fit(frame); /****************** Error messages frame ****************************/ mes_frame = (Frame)xv_create(frame,FRAME, NULL); message_panel=(Panel)xv_create(mes_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(message_panel,PANEL_MESSAGE, PANEL_LABEL_STRING, "Cannot find file ... try again !", NULL); xv_create(message_panel, PANEL_BUTTON, PANEL_LABEL_STRING, "OK", PANEL_NOTIFY_PROC, message_off, NULL); window_fit(message_panel); window_fit(mes_frame); /****************** Screen print frame ****************************/ print_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Printing tool", NULL); print_panel=(Panel)xv_create(print_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(print_panel, PANEL_TEXT, PANEL_LABEL_STRING, "Output File : ", PANEL_VALUE, PRINT_NAME, PANEL_VALUE_DISPLAY_LENGTH, 30, PANEL_VALUE_STORED_LENGTH, 50, PANEL_NOTIFY_PROC, get_print_name, NULL); PRINT_MESSAGE=(Panel_item)xv_create(print_panel,PANEL_MESSAGE, PANEL_LABEL_STRING, NULL, NULL); window_fit(print_panel); window_fit(print_frame); /**************** Options / Utilities Frame ***********************/ options_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Options", NULL); panel_options = (Panel)xv_create(options_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); SVD_ONOFF=(Panel_item)xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "SVD Reduction", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, svd_on_off, PANEL_VALUE, 1, NULL); xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Time Domain Display", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, tdomain_on_off, PANEL_VALUE, 1, NULL); xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Mutual Information", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, mut_on_off, PANEL_VALUE, 1, NULL); xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Local SVD Display", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, lsvd_on_off, PANEL_VALUE, 1, NULL); xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Poincare", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, poin_on_off, PANEL_VALUE, 1, NULL); xv_create(panel_options,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Lyapunov exps", PANEL_CHOICE_STRINGS, "On","Off",NULL, PANEL_NOTIFY_PROC, lya_on_off, PANEL_VALUE, 1, NULL); window_fit(panel_options); window_fit(options_frame); /***************** Time Domain Display ****************************/ time_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL, "Time Domain", NULL); canvas_time = (Canvas)xv_create(time_frame, CANVAS, XV_WIDTH, 500, XV_HEIGHT, 100, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, time_paint_proc, WIN_CMS, cms, NULL); canvas_win_time=(Window)xv_get(canvas_paint_window(canvas_time), XV_XID); panel_time = (Panel)xv_create(time_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(panel_time, PANEL_BUTTON, PANEL_LABEL_STRING, "Zoom Out", PANEL_NOTIFY_PROC, zoom_out, NULL); xv_create(panel_time, PANEL_BUTTON, PANEL_LABEL_STRING, "Zoom In", PANEL_NOTIFY_PROC, zoom_in, NULL); window_fit(panel_time); window_fit(time_frame); /***************** local Singular Value Frame ***********************/ lsvd_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Local SVD Display", NULL); canvas_lsvd = (Canvas)xv_create(lsvd_frame, CANVAS, XV_WIDTH, 300, XV_HEIGHT, 300, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, lsvd_paint_proc, WIN_CMS, cms, NULL); canvas_win_lsvd=(Window)xv_get(canvas_paint_window(canvas_lsvd), XV_XID); panel_lsvd = (Panel)xv_create(lsvd_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(panel_lsvd, PANEL_NUMERIC_TEXT, PANEL_LABEL_STRING, "Iterations", PANEL_VALUE_DISPLAY_LENGTH, 5, PANEL_MAX_VALUE, 50, PANEL_VALUE, 20, PANEL_NOTIFY_PROC, lsvd_num_adjust, NULL); xv_create(panel_lsvd, PANEL_TEXT, PANEL_LABEL_STRING, "Start Radius", PANEL_VALUE_DISPLAY_LENGTH, 7, PANEL_VALUE, "100", PANEL_NOTIFY_PROC, lsvd_st_rad, NULL); xv_create(panel_lsvd, PANEL_NUMERIC_TEXT, PANEL_LABEL_STRING, "Section length", PANEL_MAX_VALUE, 25000, PANEL_VALUE_DISPLAY_LENGTH, 5, PANEL_VALUE, 1000, PANEL_NOTIFY_PROC, lsvd_length, NULL); xv_create(panel_lsvd, PANEL_BUTTON, PANEL_LABEL_STRING, "Accept Setup", PANEL_NOTIFY_PROC, lsvd_accept, NULL); xv_create(panel_lsvd, PANEL_BUTTON, PANEL_LABEL_STRING, "Print", PANEL_NOTIFY_PROC, lsvd_print, NULL); window_fit(panel_lsvd); window_fit(lsvd_frame); /*************** Mutual Information frame ***********************/ mut_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Mutual Information", NULL); canvas_mut = (Canvas)xv_create(mut_frame, CANVAS, XV_WIDTH, 300, XV_HEIGHT, 300, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, mut_paint_proc, WIN_CMS, cms, NULL); canvas_win_mut=(Window)xv_get(canvas_paint_window(canvas_mut), XV_XID); panel_mut = (Panel)xv_create(mut_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); xv_create(panel_mut, PANEL_NUMERIC_TEXT, PANEL_LABEL_STRING, "Max delay", PANEL_VALUE_DISPLAY_LENGTH, 5, PANEL_MAX_VALUE, 200, PANEL_VALUE, 100, PANEL_NOTIFY_PROC, mut_num_adjust, NULL); xv_create(panel_mut, PANEL_TEXT, PANEL_LABEL_STRING, "Radius", PANEL_VALUE_DISPLAY_LENGTH, 7, PANEL_VALUE, "100", PANEL_NOTIFY_PROC, mut_st_rad, NULL); xv_create(panel_mut, PANEL_NUMERIC_TEXT, PANEL_LABEL_STRING, "Section length", PANEL_MAX_VALUE, 25000, PANEL_VALUE_DISPLAY_LENGTH, 5, PANEL_VALUE, 1000, PANEL_NOTIFY_PROC, mut_length, NULL); xv_create(panel_mut, PANEL_BUTTON, PANEL_LABEL_STRING, "Accept Setup", PANEL_NOTIFY_PROC, mut_accept, NULL); xv_create(panel_mut, PANEL_BUTTON, PANEL_LABEL_STRING, "Print", PANEL_NOTIFY_PROC, mut_print, NULL); window_fit(panel_mut); window_fit(mut_frame); /*************** Poincare section frame ************************/ poin_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Poincare section", NULL); canvas_poin = (Canvas)xv_create(poin_frame, CANVAS, XV_WIDTH, 300, XV_HEIGHT, 300, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, poin_paint_proc, WIN_CMS, cms, NULL); canvas_win_poin=(Window)xv_get(canvas_paint_window(canvas_poin), XV_XID); window_fit(poin_frame); /***************** Lyapunov exponents Frame ***********************/ lya_frame = (Frame)xv_create(frame,FRAME, FRAME_LABEL,"Lyapunov exponents Display", NULL); canvas_lya = (Canvas)xv_create(lya_frame, CANVAS, XV_WIDTH, 425, XV_HEIGHT, 425, CANVAS_X_PAINT_WINDOW, TRUE, CANVAS_REPAINT_PROC, lya_setup_proc, WIN_CMS, cms, NULL); canvas_win_lya=(Window)xv_get(canvas_paint_window(canvas_lya), XV_XID); panel_lya = (Panel)xv_create(lya_frame, PANEL, PANEL_LAYOUT, PANEL_VERTICAL, NULL); LYA_EMBEDDING=(Panel_item)xv_create(panel_lya,PANEL_CHECK_BOX, PANEL_LAYOUT, PANEL_HORIZONTAL, PANEL_CHOOSE_ONE, TRUE, PANEL_LABEL_STRING, "Embedding", PANEL_CHOICE_STRINGS, "time delay","svd",NULL, PANEL_NOTIFY_PROC, lya_embed_choice, PANEL_VALUE, 0, NULL); SVD_M_SLIDER=(Panel_item)xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Time Delay", PANEL_VALUE, 10, PANEL_MAX_VALUE, 100, PANEL_INACTIVE, FALSE, PANEL_NOTIFY_PROC, svd_m_window, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Global Dim", PANEL_VALUE, 3, PANEL_MAX_VALUE, 10, PANEL_NOTIFY_PROC, adjust_globdim, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Local Dim", PANEL_VALUE, 3, PANEL_MAX_VALUE, 10, PANEL_NOTIFY_PROC, adjust_locdim, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Reinit", PANEL_VALUE, 5, PANEL_MAX_VALUE, 50, PANEL_NOTIFY_PROC, adjust_reinit, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "B vectors", PANEL_VALUE, 20, PANEL_MAX_VALUE, 300, PANEL_NOTIFY_PROC, adjust_B, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Averages", PANEL_VALUE, 1, PANEL_MAX_VALUE, 10, PANEL_NOTIFY_PROC, adjust_average, NULL); xv_create(panel_lya, PANEL_SLIDER, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Evolve Length", PANEL_VALUE, 1000, PANEL_MAX_VALUE, 10000, PANEL_NOTIFY_PROC, adjust_evolve, NULL); xv_create(panel_lya, PANEL_TEXT, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Tau", PANEL_VALUE_DISPLAY_LENGTH, 7, PANEL_VALUE, "1", PANEL_NOTIFY_PROC, adjust_tau, NULL); xv_create(panel_lya, PANEL_TEXT, PANEL_LABEL_WIDTH, LABEL_WIDTH, PANEL_LABEL_STRING, "Draw Line", PANEL_VALUE_DISPLAY_LENGTH, 7, PANEL_VALUE, NULL, PANEL_NOTIFY_PROC, lya_drawline, NULL); xv_create(panel_lya, PANEL_BUTTON, PANEL_LABEL_STRING, "Re-embed data", PANEL_NOTIFY_PROC, lya_embed, XV_Y, 350, XV_X, 75, NULL); LYA_START_STOP=(Panel_item)xv_create(panel_lya, PANEL_BUTTON, PANEL_LABEL_STRING, "Start", PANEL_NOTIFY_PROC, lya_accept, XV_Y, 350, XV_X, 208, NULL); xv_create(panel_lya, PANEL_BUTTON, PANEL_LABEL_STRING, "Print", PANEL_NOTIFY_PROC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -