Buffer indexes are wrong, I'm sorry for that.
Anyway, I also change the axes buffer array to the fixed one.
int nDisplayControls_wmpaint_display_threeD_proc ( HWND hWnd, HDC hDC, PAINTSTRUCT* ps, UINT uMsg, WPARAM wParam, LPARAM lParam ) { err_msg_001("mDisplayControls_wmpaint_display_threeD_proc: starts.\r\n"); static int call_once_m = 0; int a = 0; float x1 = 0.0f, y1 = 0.0f, z1 = 0.0f; float x2 = 0.0f, y2 = 0.0f, z2 = 0.0f; if ( call_once_m == 0 ) { err_msg_001("mDisplayControls_wmpaint_display_threeD_proc: middle: 002-01\r\n"); a = initialize_vAxex_2D_003 (); call_once_m = 1; err_msg_001("mDisplayControls_wmpaint_display_threeD_proc: middle: 002-02\r\n"); } err_msg_001("mDisplayControls_wmpaint_display_threeD_proc: middle: 002-03-01.\r\n"); line_index = 12; for ( int i = 3; i<line_index; i++ ) { // err_msg_001("m-02-01: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p| AXEX_2D_001[%d]=|%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001, (i - 1) / 3, AXEX_2D_001[ (i - 1) / 3 ] ); // right arrow is different, we don't know that reason. // x x1 = AXEX_2D_002[ i / 3 - 1 ].center->x; y1 = AXEX_2D_002[ i / 3 - 1 ].center->y; z1 = AXEX_2D_002[ i / 3 - 1 ].center->z; // err_msg_001("m-02-01-01: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); x2 = x1 + AXEX_2D_002[ i / 3 - 1 ].right->x * 30.0f; y2 = y1 + AXEX_2D_002[ i / 3 - 1 ].right->y * 30.0f; z2 = z1 + AXEX_2D_002[ i / 3 - 1 ].right->z * 30.0f; // err_msg_001("m-02-01-02: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); lines_001[i].setLine ( x1, y1, z1, x2, y2, z2 ) ; lines_2D_001[i].setLine ( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f ); // err_msg_001("m-02-01-03: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); i++; // err_msg_001("m-02-02: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); x1 = AXEX_2D_002[ i / 3 - 1 ].center->x; y1 = AXEX_2D_002[ i / 3 - 1 ].center->y; z1 = AXEX_2D_002[ i / 3 - 1 ].center->z; x2 = x1 + AXEX_2D_002[ i / 3 - 1 ].up->x * 30.0f; y2 = y1 + AXEX_2D_002[ i / 3 - 1 ].up->y * 30.0f; z2 = z1 + AXEX_2D_002[ i / 3 - 1 ].up->z * 30.0f; lines_001[i].setLine ( x1, y1, z1, x2, y2, z2 ) ; lines_2D_001[i].setLine ( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f ); // err_msg_001("m-02-02: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); i++; err_msg_001("m-02-03: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); x1 = AXEX_2D_002[ i / 3 - 1 ].center->x; y1 = AXEX_2D_002[ i / 3 - 1 ].center->y; z1 = AXEX_2D_002[ i / 3 - 1 ].center->z; x2 = x1 + AXEX_2D_002[ i / 3 - 1 ].depth->x * 30.0f; y2 = y1 + AXEX_2D_002[ i / 3 - 1 ].depth->y * 30.0f; z2 = z1 + AXEX_2D_002[ i / 3 - 1 ].depth->z * 30.0f ; lines_001[i].setLine ( x1, y1, z1, x2, y2, z2 ) ; lines_2D_001[i].setLine ( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f ); // err_msg_001("m-02-03: i %d line_index = %d lines_001[%d]=|%p|/ lines_001 |%p| lines_0012D[%d] =|%p| / lines_0012D |%p|\r\n", i, line_index, i, lines_001[i], lines_001, i, lines_2D_001[i], lines_2D_001 ); } // printf("m-02: line_index = %d lines_001 |%p| lines_0012D |%p|\r\n", line_index, lines_001, lines_2D_001 ); int b = convert_model_lines_002( (vLine*)lines_001, (vLine*)lines_2D_001, 3, line_index ); // printf("m-03: line_index = %d lines_001 |%p| lines_0012D |%p|\r\n", line_index, lines_001, lines_2D_001 ); // Display axes from 4 to 15 for ( int i = 3; i<line_index; i++ ) { GamePaint_011( hDC, &lines_2D_001[i] ); } err_msg_001("mDisplayControls_wmpaint_display_threeD_proc: ends.\r\n"); }