fCraft.Vector3i.GetLargestComponent C# (CSharp) Method

GetLargestComponent() public method

public GetLargestComponent ( ) : int
return int
        public int GetLargestComponent()
        {
            int maxVal = Math.Max(Math.Abs(x), Math.Max(Math.Abs(y), Math.Abs(z)));
            if (maxVal == Math.Abs(x)) return 0;
            if (maxVal == Math.Abs(y)) return 1;
            return 2;
        }

Usage Example

Example #1
0
            bool TaperedLimb(Vector3i start, Vector3i end, float startSize, float endSize)
            {
                Vector3i delta   = end - start;
                int      primidx = delta.GetLargestComponent();
                int      maxdist = delta[primidx];

                if (maxdist == 0)
                {
                    return(false);
                }
                int primsign = (maxdist > 0 ? 1 : -1);

                int secidx1 = (primidx - 1) % 3;
                int secidx2 = (primidx + 1) % 3;

                int   secdelta1 = delta[secidx1];
                float secfac1   = secdelta1 / (float)delta[primidx];
                int   secdelta2 = delta[secidx2];
                float secfac2   = secdelta2 / (float)delta[primidx];

                Vector3i coord     = new Vector3i();
                int      endoffset = delta[primidx] + primsign;

                for (int primoffset = 0; primoffset < endoffset; primoffset += primsign)
                {
                    int primloc = start[primidx] + primoffset;
                    int secloc1 = (int)(start[secidx1] + primoffset * secfac1);
                    int secloc2 = (int)(start[secidx2] + primoffset * secfac2);
                    coord[primidx] = primloc;
                    coord[secidx1] = secloc1;
                    coord[secidx2] = secloc2;
                    float primdist = (float)Math.Abs(delta[primidx]);
                    float radius   = endSize + (startSize - endSize) * Math.Abs(delta[primidx] - primoffset) / (float)primdist;

                    CrossSection(coord, radius, primidx, TILETYPE_LOG);
                }
                return(true);
            }