We'd rather love to draw the box once, before any other objects because box program is necesarily in drawing on the screen for faster calculation.
----
(20200608: )
curtain->box->Center = {x=-35.8818359 y=10.0000000 z=-240.000000 }
0x00459b20 {RailWidth=1000 Width=500 points=0x00000000 {???} ...}
----
Convert:
[0] = 0x00c6ed08 {p1=0x00c724f8 {x=-300.000000 y=0.000000000 z=-300.000000 } p2=0x00c72418 {x=-300.000000 ...} ...}
[1] = 0x00c6edc8 {p1=0x00c71ff0 {x=-300.000000 y=20.0000000 z=-300.000000 } p2=0x00c71fb8 {x=220.120850 y=...} ...}
to screen:
ll->p1 = 0x0114bcc0 {x=-26.3200436 y=-98.4446411 z=-300.000000 }
ll->p2 = 0x0114bcf8 {x=-26.5000000 y=-99.9849243 z=-300.000000 }
----
----
.\display_threeD.cpp Mon Jun 08 02:52:54 2020 351 : 352 :// p5 p6 353 :// 354 :// 355 :// p1 p2 356 :// 357 :// 358 :// p4 p7 359 :// 360 :// 361 :// p0 p3 362 : 363 :// 20200605: calculation of box, which belogs to rails: 364 :// 20200606: compilled once: 365 :// 366 :// 367 :// 368 :void calculation_box_onralis( vPointLinear* pCurveLines ) { 369 : printf("void calculation_box_onralis( vPointLinear* pCurveLines ) starts.\r\n"); 370 : 371 : float x1 = 99999999999.0f, y1 = 99999999999.0f, z1 = 99999999999.0f; 372 : float x2 = -99999999999.0f, y2 = -99999999999.0f, z2 = -99999999999.0f; 373 : 374 : if ( pCurveLines == nullptr ) return; 375 : if ( pCurveLines->numPS < 1 ) return; 376 : 377 : curtain = new vRailCurtain (); 378 : 379 : //pCurveLines = new vPointLinear(); 380 : for ( int i=0; inumPS; i++ ) { 381 : if ( pCurveLines->aPS[i]->Anchor->x < x1 ) x1 = pCurveLines->aPS[i]->Anchor->x; 382 : if ( pCurveLines->aPS[i]->Anchor->y < y1 ) y1 = pCurveLines->aPS[i]->Anchor->y; 383 : if ( pCurveLines->aPS[i]->Anchor->z < z1 ) z1 = pCurveLines->aPS[i]->Anchor->z; 384 : if ( pCurveLines->aPS[i]->Anchor->x > x2 ) x2 = pCurveLines->aPS[i]->Anchor->x; 385 : if ( pCurveLines->aPS[i]->Anchor->y > y2 ) y2 = pCurveLines->aPS[i]->Anchor->y; 386 : if ( pCurveLines->aPS[i]->Anchor->z > z2 ) z2 = pCurveLines->aPS[i]->Anchor->z; 387 : } 388 : 389 : if (curtain->box == nullptr) curtain->box = new vBox(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); 390 : 391 : curtain->box->p[0]->setPoint( x1, y1, z1 ); 392 : curtain->box->p[1]->setPoint( x1, y2, z1 ); 393 : curtain->box->p[2]->setPoint( x2, y2, z1 ); 394 : curtain->box->p[3]->setPoint( x2, y1, z1 ); 395 : 396 : curtain->box->p[4]->setPoint( x1, y1, z2 ); 397 : curtain->box->p[5]->setPoint( x1, y2, z2 ); 398 : curtain->box->p[6]->setPoint( x2, y2, z2 ); 399 : curtain->box->p[7]->setPoint( x2, y1, z2 ); 400 : 401 : curtain->box->line[ 0] = new vLine ( curtain->box->p[0], curtain->box->p[1]); 402 : curtain->box->line[ 1] = new vLine ( curtain->box->p[1], curtain->box->p[2]); 403 : curtain->box->line[ 2] = new vLine ( curtain->box->p[2], curtain->box->p[3]); 404 : curtain->box->line[ 3] = new vLine ( curtain->box->p[3], curtain->box->p[0]); 405 : curtain->box->line[ 4] = new vLine ( curtain->box->p[4], curtain->box->p[5]); // bottom 406 : curtain->box->line[ 5] = new vLine ( curtain->box->p[5], curtain->box->p[6]); 407 : curtain->box->line[ 6] = new vLine ( curtain->box->p[6], curtain->box->p[7]); 408 : curtain->box->line[ 7] = new vLine ( curtain->box->p[7], curtain->box->p[4]); 409 : curtain->box->line[ 8] = new vLine ( curtain->box->p[0], curtain->box->p[4]); // connction of faces 410 : curtain->box->line[ 9] = new vLine ( curtain->box->p[1], curtain->box->p[5]); 411 : curtain->box->line[10] = new vLine ( curtain->box->p[3], curtain->box->p[7]); 412 : curtain->box->line[11] = new vLine ( curtain->box->p[2], curtain->box->p[6]); 413 : 414 : // 20200607: 415 : curtain->box->Center.setPoint( ( x2 + x1 ) /2.0f, (y2 + y1) / 2.0f, (z2 + z1) / 2.0f ); 416 : 417 : printf("void calculation_box_onralis( vPointLinear* pCurveLines ) ends.\r\n"); 418 : return; 419 :} 420 :
----
.\display_threeD.cpp Sat Jun 06 23:52:34 2020 347 :// p5 p6 348 :// 349 :// 350 :// p1 p2 351 :// 352 :// 353 :// p4 p7 354 :// 355 :// 356 :// p0 p3 357 : 358 :// 20200605: calculation of box, which belongs to rails 359 :// 20200606: compilled once: 360 :// 361 :// 362 :// 363 :void calculation_box_onralis( vPointLinear* pCurveLines ) { 364 : float x1, x2, y1, y2, z1, z2; 365 : 366 : printf("void calculation_box_onralis( vPointLinear* pCurveLines ) starts.\r\n"); 367 : 368 : if ( pCurveLines == nullptr ) return; 369 : if ( pCurveLines->numPS < 1 ) return; 370 : 371 : curtain = new vRailCurtain (); 372 : 373 : pCurveLines = new vPointLinear(); 374 : for ( int i=0; inumPS; i++ ) { 375 : if ( pCurveLines->aPS[i]->Anchor->x < x1 ) curtain->box->x1 = x1; 376 : if ( pCurveLines->aPS[i]->Anchor->y < y1 ) curtain->box->y1 = y1; 377 : if ( pCurveLines->aPS[i]->Anchor->z < z1 ) curtain->box->z1 = z1; 378 : if ( pCurveLines->aPS[i]->Anchor->x > x2 ) curtain->box->x2 = x2; 379 : if ( pCurveLines->aPS[i]->Anchor->y > y2 ) curtain->box->y2 = y2; 380 : if ( pCurveLines->aPS[i]->Anchor->z > z2 ) curtain->box->z2 = z2; 381 : } 382 : 383 : curtain->box = new vBox( x1, x2, y1, y2, z1, z2 ); 384 : 385 : curtain->box->p[0]->setoint( x1, y1, z1 ); 386 : curtain->box->p[1]->setoint( x1, y2, z1 ); 387 : curtain->box->p[2]->setoint( x2, y2, z1 ); 388 : curtain->box->p[3]->setoint( x2, y1, z1 ); 389 : 390 : curtain->box->p[4]->setoint( x1, y1, z2 ); 391 : curtain->box->p[5]->setoint( x1, y2, z2 ); 392 : curtain->box->p[6]->setoint( x2, y2, z2 ); 393 : curtain->box->p[7]->setoint( x2, y1, z2 ); 394 : 395 : printf("void calculation_box_onralis( vPointLinear* pCurveLines ) ends.\r\n"); 396 : return; 397 :} 398 : --- .\display_threeD.cpp Sat Jun 06 21:28:33 2020 345 :// 20200605: calculation of box, which belogs to rails 346 :// 20200606: compilled once: 347 :// 348 :// 349 :// 350 :void calculation_box_onralis( vPointLinear* pCurveLines ) { 351 : float x1, x2, y1, y2, z1, z2; 352 : 353 : printf("void calculation_box_onralis( vPointLinear* pCurveLines ) starts.\r\n"); 354 : 355 : if ( pCurveLines == nullptr ) return; 356 : if ( pCurveLines->numPS < 1 ) return; 357 : 358 : curtain = new vRailCurtain (); 359 : 360 : pCurveLines = new vPointLinear(); 361 : for ( int i=0; i numPS; i++ ) { 362 : if ( pCurveLines->aPS[i]->Anchor->x < x1 ) curtain->box->x1 = x1; 363 : if ( pCurveLines->aPS[i]->Anchor->y < y1 ) curtain->box->y1 = y1; 364 : if ( pCurveLines->aPS[i]->Anchor->z < z1 ) curtain->box->z1 = z1; 365 : if ( pCurveLines->aPS[i]->Anchor->x > x2 ) curtain->box->x2 = x2; 366 : if ( pCurveLines->aPS[i]->Anchor->y > y2 ) curtain->box->y2 = y2; 367 : if ( pCurveLines->aPS[i]->Anchor->z > z2 ) curtain->box->z2 = z2; 368 : } 369 :