рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдХрдЯреНрд░реА рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рджреГрд╢реНрдпред рднрд╛рдЧ 1


рдСрдХреНрдЯреЗрд╡рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди, рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рди рдХреЗрд╡рд▓ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рд┐рджреНрдз рдФрд░ рдкреНрд░рд┐рдп idSoftware, рдХрдВрдкреНрдпреВрдЯрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рдореБрдЦ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо рд╕реЗ рдЬреБрдбрд╝реА рд╣рд░ рдЪреАрдЬ, рдЕрдкрдиреЗ рдирдП рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрднрд┐рдирд╡ рд╕реНрдкрд╛рд░реНрд╕ рд╡реЛрдХреНрд╕рд▓ рдСрдХреНрдЯреНрд░реА рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ рддрдХрдиреАрдХ рдЖрдИрдбреА рдЯреЗрдХ 6 рдЗрдВрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдПрдХ рдЕрд╖реНрдЯрдореБрдЦреА рд╡реГрдХреНрд╖ рд╣реИред рд╕рдкреНрддрдХ рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдореЙрдбрд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдбреНрдпреВрдХрдиреЗрдХрдо 3 рдбреА рдЗрдВрдЬрди рдХреЗ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕ рд░рдЪрдирд╛ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ред рдЬрдм рдЕрдиреБрдХреВрд▓рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреМрддрд┐рдХреА рдореЙрдбрд▓рд┐рдВрдЧ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрддреНрдерд░ рдХрд╛ рдХрд╛рдо рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рдпрд╣ рдХрд┐рд░рдг рдЕрдиреБрд░реЗрдЦрдг рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдСрдХреНрдЯреЛ-рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рдПрдХ рдмрд╣реБрдд!

рдПрдХ рдСрдХреНрдЯреНрд░реА рдЯреНрд░реА рдПрдХ рдкреЗрдбрд╝ рдХреА рддрд░рд╣, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рдЖрда рд╡рдВрд╢рдЬ рд╣реИрдВред рдЗрд╕реЗ рддреАрди рдЖрдпрд╛рдореА рдШрди ( рд╕реНрд╡рд░ ) рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рддреАрди рд╡рд┐рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд▓рд╛рдЯ, рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╡рд┐рдорд╛рдиреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдШрди рдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдХреЗрдВрджреНрд░ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдЖрда рдХреНрдпреВрдмреНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдСрдХреНрдЯреНрд░реА рдЯреНрд░реА рдиреЛрдб рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рд╣рдорд╛рд░реЗ рдмрдбрд╝реЗ рдШрдиред
рдиреАрдЪреЗ рдУрдХрдЯреНрд░реА рдХреЗ рдкреЗрдбрд╝ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ, рдмрд╛рдпрдкрд╛рд╕ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

1 рдПрдХ рдкреЗрдбрд╝ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо





рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдПрдБред рдиреЛрдб рдореЗрдВ рд╣рдо voxel рдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░реЗрдВрдЧреЗ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рд░рдВрдЧред рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рджрд┐рдЦреЗрдЧреА
struct octTree { mid midle; //   float lenght; //   char novusial; //  : / RGB_color color;//   octTree* up; //    octTree* t1; //  octTree* t2; octTree* t3; octTree* t4; octTree* t5; octTree* t6; octTree* t7; octTree* t8; }; struct mid //   { float x; float y; float z; }; struct RGB_color //  { float R; float G; float B; }; 


рдЕрдЧрд▓рд╛, рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВред Dscr - рдШрди рдХрд╛ рд╕рдВрдХрд▓реНрдк (рдУрдХреНрдЯреНрд░реА рдЯреНрд░реА), рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЗ рд╕рдмрд╡реЛрдХреНрд╕рд▓реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ред Descr 8. рдХрд╛ рдПрдХ рдорд▓реНрдЯреАрдкрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд┐рдб рдорд┐рдбрд▓ - рдЗрд╕рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдлреНрд▓реЛрдЯ рд▓реЗрди - рдХреНрдпреВрдм рдХреЗ рдХрд┐рдирд╛рд░реЗ рдХреА рд▓рдВрдмрд╛рдИ, рдУрдХрдЯреНрд░реА * рдЕрдк - рдкреЗрд░реЗрдВрдЯ рдиреЛрдб, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд░реВрдЯ рдбрд╛рд▓реЗрдВред рд░реВрдЯ, рдСрдХреНрдЯрдЯреНрд░реА ** рдПрд▓ - рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдмрдирд╛рдпрд╛ рдиреЛрдб рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдЬрд╣рд╛рдВ рдкрд╣рд▓рд╛ рд░рди, рд░реВрдЯ рдПрдбреНрд░реЗрд╕ ** рд░реВрдЯ рдХрд╛ рдПрдбреНрд░реЗрд╕ рдбрд╛рд▓реЗрдВред
 // . dscr -    el . void OctObject::makeTr(octTree** el,int dscr,mid midle,float len,octTree* up) { mid setmidle; //        / if(*el==NULL) { (*el)=new octTree; (*el)->lenght=len; (*el)->midle=midle; (*el)->novusial=0; (*el)->color.B=(*el)->color.G=(*el)->color.R=1; // . null(*el); (*el)->up=up; if(!(dscr%8)) { (*el)->novusial=1;//    . //      //    ,   setmidle.x=(*el)->midle.x-(*el)->lenght/4; /// 1 -   setmidle.y=(*el)->midle.y+(*el)->lenght/4; setmidle.z=(*el)->midle.z+(*el)->lenght/4; this->makeTr(&((*el)->t1),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x+(*el)->lenght/4;/// 2 -   setmidle.y=(*el)->midle.y+(*el)->lenght/4; setmidle.z=(*el)->midle.z+(*el)->lenght/4; this->makeTr(&((*el)->t2),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x-(*el)->lenght/4;/// 3 -   setmidle.y=(*el)->midle.y-(*el)->lenght/4; setmidle.z=(*el)->midle.z+(*el)->lenght/4; this->makeTr(&((*el)->t3),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x+(*el)->lenght/4;/// 4 -   setmidle.y=(*el)->midle.y-(*el)->lenght/4; setmidle.z=(*el)->midle.z+(*el)->lenght/4; this->makeTr(&((*el)->t4),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x-(*el)->lenght/4;/// 5 -   setmidle.y=(*el)->midle.y+(*el)->lenght/4; setmidle.z=(*el)->midle.z-(*el)->lenght/4; this->makeTr(&((*el)->t5),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x+(*el)->lenght/4;/// 6 -   setmidle.y=(*el)->midle.y+(*el)->lenght/4; setmidle.z=(*el)->midle.z-(*el)->lenght/4; this->makeTr(&((*el)->t6),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x-(*el)->lenght/4;/// 7 -   setmidle.y=(*el)->midle.y-(*el)->lenght/4; setmidle.z=(*el)->midle.z-(*el)->lenght/4; this->makeTr(&((*el)->t7),dscr/8,setmidle,(*el)->lenght/2,(*el)); setmidle.x=(*el)->midle.x+(*el)->lenght/4;/// 8 -   setmidle.y=(*el)->midle.y-(*el)->lenght/4; setmidle.z=(*el)->midle.z-(*el)->lenght/4; this->makeTr(&((*el)->t8),dscr/8,setmidle,(*el)->lenght/2,(*el)); } } else if(*el==root) //     { setmidle.x=root->midle.x-root->lenght/4; /// 1 -   setmidle.y=root->midle.y+root->lenght/4; setmidle.z=root->midle.z+root->lenght/4; this->makeTr(&((*el)->t1),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x+root->lenght/4;/// 2 -   setmidle.y=root->midle.y+root->lenght/4; setmidle.z=root->midle.z+root->lenght/4; this->makeTr(&((*el)->t2),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x-root->lenght/4;/// 3 -   setmidle.y=root->midle.y-root->lenght/4; setmidle.z=root->midle.z+root->lenght/4; this->makeTr(&((*el)->t3),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x+root->lenght/4;/// 4 -   setmidle.y=root->midle.y-root->lenght/4; setmidle.z=root->midle.z+root->lenght/4; this->makeTr(&((*el)->t4),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x-root->lenght/4;/// 5 -   setmidle.y=root->midle.y+root->lenght/4; setmidle.z=root->midle.z-root->lenght/4; this->makeTr(&((*el)->t5),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x+root->lenght/4;/// 6 -   setmidle.y=root->midle.y+root->lenght/4; setmidle.z=root->midle.z-root->lenght/4; this->makeTr(&((*el)->t6),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x-root->lenght/4;/// 7 -   setmidle.y=root->midle.y-root->lenght/4; setmidle.z=root->midle.z-root->lenght/4; this->makeTr(&((*el)->t7),dscr/8,setmidle,root->lenght/2,root); setmidle.x=root->midle.x+root->lenght/4;/// 8 -   setmidle.y=root->midle.y-root->lenght/4; setmidle.z=root->midle.z-root->lenght/4; this->makeTr(&((*el)->t8),dscr/8,setmidle,root->lenght/2,root); } return; } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИред
рдЬрдм рдХреИрдорд░реЗ рдХреЛ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рдмрд╡реЛрдХреНрд╕реЗрд▓ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдСрдХреНрдЯреНрд░реА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрдирд╛рдПрдВрдЧреЗред

рд╕реНрд╡рд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рд╕реАрдзреЗ рдХрд┐рд░рдг рдЕрдиреБрд░реЗрдЦрдг рд╡рд┐рдзрд┐ рдХреЛ рддреНрд░рд┐-рдЖрдпрд╛рдореА рджреГрд╢реНрдп рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд╡рд░ рдХреЗ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд┐рд░рдг рдХреЗ рдкрд╛рдП рдЧрдП рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдмрд┐рдВрджреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХреНрд╕, рд╡рд╛рдИ, рдЬреЗрдб - рд╡рд░реНрддрдорд╛рди рд╕рдордп рдореЗрдВ рдХрд┐рд░рдг рд╡реЗрдХреНрдЯрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред octTree * el - рд╡рд╣ рдиреЛрдб рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдЪреМрд░рд╛рд╣реЗ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

 //    ,   . octTree* OctObject::seach(float x, float y, float z,octTree *el) { if(el->t1==NULL) if(el->novusial!=1) //       ,    . return el; else return NULL; else { if(((el->midle.z+el->lenght/2)>=z)&&(el->midle.z<=z))//1 -   oz -  { if(((el->midle.y+el->lenght/2)>=y)&&(el->midle.y<=y))// 1-    oy-  { if((el->midle.x-el->lenght/2<=x)&&(el->midle.x>=x))//1 -    ox-  { return seach(x,y,z,el->t1); } else if((el->midle.x+el->lenght/2>=x)&&(el->midle.x<=x))//2-    ox-  { return seach(x,y,z,el->t2); } else return NULL; //   } else { if(((el->midle.y-el->lenght/2)<=y)&&(el->midle.y>=y))// 2-   oy -  { if((el->midle.x-el->lenght/2<=x)&&(el->midle.x>=x))//1 -    ox-  { return seach(x,y,z,el->t3); } else if((el->midle.x+el->lenght/2>=x)&&(el->midle.x<=x))//2-    ox-  { return seach(x,y,z,el->t4); } else return NULL; //   } else return NULL; //   } } else { if(((el->midle.z-el->lenght/2)<=z)&&(el->midle.z>=z))//2 -   oz -  { if(((el->midle.y+el->lenght/2)>=y)&&(el->midle.y<=y))// 1-    oy-  { if((el->midle.x-el->lenght/2<=x)&&(el->midle.x>=x))//1 -    ox-  { return seach(x,y,z,el->t5); } else if((el->midle.x+el->lenght/2>=x)&&(el->midle.x<=x))//2-    ox-  { return seach(x,y,z,el->t6); } else return NULL; //   } else { if(((el->midle.y-el->lenght/2)<=y)&&(el->midle.y>=y))// 2-   oy -  { if((el->midle.x-el->lenght/2<=x)&&(el->midle.x>=x))//1 -    ox-  { return seach(x,y,z,el->t7); } else if((el->midle.x+el->lenght/2>=x)&&(el->midle.x<=x))//2-    ox-  { return seach(x,y,z,el->t8); } else return NULL; //   } else return NULL; //   } } else return NULL; //  } } } 


рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреАрдмреЛрд░реНрдб рдФрд░ рдорд╛рдЙрд╕ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рд╕реНрдкреЗрд╕ рдмрд╛рд░ рджрдмрд╛рдХрд░ рдпрд╛ рд╕реНрд╡рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдмреАрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред


 //    ,         . octTree* OctObject::FindVoxeloutside(float a, float b,float c) { float x,y,z; octTree *ret; z=(fabs(x=(fabs(a)>=fabs(b) ? a : b))>=fabs(c) ? x : c);//      ,  ,,    . if(z==a) { x=a; //   do{ if(fabs(a)>=fabs(x)) { y=x/a*b; z=x/a*c;//   .        . if((ret=seach(x,y,z,root))!=NULL) { return ret; } x+=eps*(a>0 ? -1 : 1); }else return NULL; }while(true); } else if(z==b) { y=b; //   do{ if(fabs(b)>=fabs(y)) { x=y/b*a; z=y/b*c;//   .        . if((ret=seach(x,y,z,root))!=NULL) { return ret; } y+=eps*(b>0 ? -1 : 1); }else return NULL; }while(true); } else if(z==c) { z=c; //   do{ if(fabs(c)>=fabs(z)) { x=z/c*a; y=z/c*b;//   .        . if((ret=seach(x,y,z,root))!=NULL) { return ret; } z+=eps*(c>0 ? -1 : 1); }else return NULL; }while(true); } return NULL; } 


2 рдПрдХ рдиреЛрдб рд╣рдЯрд╛рдПрдВ



рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдиреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдорд╣рдВрдЧрд╛ рд╣реИред рд╣рдо рд╣рдЯрд╛рдП рдЧрдП рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдП рдЧрдП рддрддреНрд╡ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдУрдкреЗрдирдЧреЗрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдЗрд╕рдХреЗ рдХреЛрдиреЗ рди рднреЗрдЬреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдЪреЗрд╣рд░реЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рди рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдШрдЯрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдкрд░, рдкреВрд░реЗ рдкреЗрдбрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдореЗрдореЛрд░реА рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдиреЛрдбреНрд╕ рдФрд░ рд╕рдмрдиреЙрдбреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 //   (  6   6  ""   ). void OctObject::del(octTree *el) { if(el==NULL) { return; } else { el->novusial=1;//    (). if(el->up==NULL)//  . return; if(el->up->novusial)//  /     el, return; // novusial==1,   ,    novusial==1, ..   . del(el->up); } return;} 



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, "рднрд╛рдЧ 2" рдореЗрдВ рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдФрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдУрдкрдирдЧреИрд▓ рдкрд░ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╣рд▓рдЪрд▓ рдХрд░рдирд╛ рд╣реИред

рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдУрдкрдирдЬреАрдПрд▓ рдореЗрдВ рдШреВрдордиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдХреА рдХреЛрдб, рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдФрд░ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред

Source: https://habr.com/ru/post/In133769/


All Articles