fCraft.Forester.ProceduralTree.CrossSection C# (CSharp) Method

CrossSection() private method

private CrossSection ( Vector3I center, float radius, int diraxis, Block matidx ) : void
center Vector3I
radius float
diraxis int
matidx Block
return void
            private void CrossSection( Vector3I center, float radius, int diraxis, Block matidx )
            {
                int rad = ( int )( radius + .618 );
                int secidx1 = ( diraxis - 1 ) % 3;
                int secidx2 = ( diraxis + 1 ) % 3;

                Vector3I coord = new Vector3I();

                for ( int off1 = -rad; off1 <= rad; off1++ ) {
                    for ( int off2 = -rad; off2 <= rad; off2++ ) {
                        float thisdist = ( float )Math.Sqrt( Sqr( Math.Abs( off1 ) + .5 ) +
                                                           Sqr( Math.Abs( off2 ) + .5 ) );
                        if ( thisdist > radius )
                            continue;
                        int pri = center[diraxis];
                        int sec1 = center[secidx1] + off1;
                        int sec2 = center[secidx2] + off2;
                        coord[diraxis] = pri;
                        coord[secidx1] = sec1;
                        coord[secidx2] = sec2;
                        Args.PlaceBlock( coord, matidx );
                    }
                }
            }