this.beginFill ( 0xee3333, 100) txa1 = -1.3; tya1 = 0; tza1 = -.17; txa2 = -1.17; tya2 = 0; tza2 = -.3; txa3 = -1.04; tya3 = 0; tza3 = -.17; txa4 = -1.17; tya4 = 0; tza4 = -.04; drquad() // draw one quadrilateral if visable // or draw one poly based off the cropped quad function drquad() { // input: txa1, tya1, tza1 ... txa4, tya4, tza4 sinrad = _parent.sinrad cosrad = _parent.cosrad txb[1] = cx + Number(String( ( txa1 ) * sinrad - ( tya1 ) * cosrad )) tyb[1] = cy + Number(String( ( tya1 ) * sinrad + ( txa1 ) * cosrad )) txb[3] = cx + Number(String( ( txa2 ) * sinrad - ( tya2 ) * cosrad )) tyb[3] = cy + Number(String( ( tya2 ) * sinrad + ( txa2 ) * cosrad )) txb[5] = cx + Number(String( ( txa3 ) * sinrad - ( tya3 ) * cosrad )) tyb[5] = cy + Number(String( ( tya3 ) * sinrad + ( txa3 ) * cosrad )) txb[7] = cx + Number(String( ( txa4 ) * sinrad - ( tya4 ) * cosrad )) tyb[7] = cy + Number(String( ( tya4 ) * sinrad + ( txa4 ) * cosrad )) if( tyb[1] >1.3 || tyb[3] >1.3 || tyb[5] >1.3 || tyb[7] >1.3 ) { // unscaled/matrix data. if in front of camera if( tyb[1] < .3 ) tyb1p = .3; else tyb1p = tyb[1]; // positive version if( tyb[3] < .3 ) tyb3p = .3; else tyb3p = tyb[3]; // special left/right check version if( tyb[5] < .3 ) tyb5p = .3; else tyb5p = tyb[5]; // don't want to pass infinity if( tyb[7] < .3 ) tyb7p = .3; else tyb7p = tyb[7]; // 3D scaling (2d43d) txc[1] = txb[1] * 800 / tyb1p // camera data txc[3] = txb[3] * 800 / tyb3p txc[5] = txb[5] * 800 / tyb5p // 800 is based off of the display area dimentions txc[7] = txb[7] * 800 / tyb7p if( txc[1] <= -400 && txc[3] <= -400 && txc[5] <= -400 && txc[7] <= -400) { // <(..<) } else if( txc[1] >= 400 && txc[3] >= 400 && txc[5] >= 400 && txc[7] >= 400 ) { // (>..)> } else { // if centered tyb[2] = .1 tyb[4] = .1 // .1 = off value // < .3 will not be used tyb[6] = .1 tyb[8] = .1 tzb[1]=tza1; tzb[3]=tza2; tzb[5]=tza3; tzb[7]=tza4; for( jj=1; jj<8; jj+=2 ){ // create points( 2,4,6,8 ) if needed jj1 = jj+1 jj2 = (jj+2)%8 if( tyb[jj] < 1.3 && tyb[jj2] < 1.3 ) { } else if( tyb[jj] < 1.3 || tyb[jj2] < 1.3 ) { tyb[jj1] = 1.3; tzb[jj1]=tzb[jj]; if( tyb[jj] >= 1 ) { txb[jj1] = txb[jj] - ( tyb[jj] -1.3 ) * ( txb[jj] - txb[jj2] ) / ( tyb[jj] - tyb[jj2] ) } else { txb[jj1] = txb[jj2] - ( tyb[jj2] -1.3 ) * ( txb[jj2] - txb[jj] ) / ( tyb[jj2] - tyb[jj] ) } txc[jj1] = txb[jj1] * 800 / tyb[jj1] } } ff = 1 for( ii=1; ii <= 8; ii++ ) { if( tyb[ii] >= 1.3 ) { tyc = tzb[ii] * 800 / tyb[ii] if( ff ) { ff=0 this.moveTo ( txc[ii], tyc ) } else { this.lineTo ( txc[ii], tyc ) } } } this.endFill(); } } }
nyknakmuseum | Oct-2014 | NYKNAK |