Exemple #1
0
        ICartData ICartData.Translate(IVector3 vector3)
        {
            var cd = new CartData(this.FileName);

            foreach (var v in data)
            {
                cd.Add(v.Translate(vector3));
            }
            return(cd);
        }
Exemple #2
0
        public CartData AsCartData()
        {
            var cartData = new DataLib.CartData();

            foreach (var pt in this)
            {
                cartData.Add(new Vector3(pt.X, pt.Y, 0));
            }
            return(cartData);
        }
        public static BoundingBox GetBB(CartData data)
        {
            try
            {
                double maxX = double.MinValue;
                double minX = double.MaxValue;
                double maxY = double.MinValue;
                double minY = double.MaxValue;
                double maxZ = double.MinValue;
                double minZ = double.MaxValue;
                foreach (var pt in data)
                {
                    double x = pt.X;
                    if (x > maxX)
                    {
                        maxX = x;
                    }
                    if (x < minX)
                    {
                        minX = x;
                    }
                    double y = pt.Y;
                    if (y > maxY)
                    {
                        maxY = y;
                    }
                    if (y < minY)
                    {
                        minY = y;
                    }
                    if (pt.Z > maxZ)
                    {
                        maxZ = pt.Z;
                    }
                    if (pt.Z < minZ)
                    {
                        minZ = pt.Z;
                    }
                }

                var bb = new BoundingBox(minX, minY, minZ, maxX, maxY, maxZ);
                return(bb);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #4
0
 public ICartData Unroll(double scaling, double unrollRadius)
 {
     try
     {
         var strip = new CartData(FileName);
         for (int i = 0; i < Count; i++)
         {
             strip.Add(this[i].UnrollCylPt(scaling, unrollRadius));
         }
         return(strip);
     }
     catch (Exception)
     {
         throw;
     }
 }
 public static CartData ConvertToCartData(Vector2[] points, double z)
 {
     try
     {
         var cartdata = new CartData("");
         foreach (Vector2 pt in points)
         {
             cartdata.Add(new Vector3(pt.X, pt.Y, z));
         }
         return(cartdata);
     }
     catch (Exception)
     {
         throw;
     }
 }
 static public CartData UnrollCylinderRing(CylData correctedRing, double scaling, double unrollRadius)
 {
     try
     {
         var strip = new CartData(correctedRing.FileName);
         foreach (var ptCyl in correctedRing)
         {
             strip.Add(UnrollCylPt(ptCyl, scaling, unrollRadius));
         }
         return(strip);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #7
0
 public ICartData MirrorXAxis()
 {
     try
     {
         var cd = new CartData();
         foreach (Vector3 pt in data)
         {
             cd.Add(new Vector3(pt.X, pt.Y * -1, pt.Z));
         }
         return(cd);
     }
     catch (Exception)
     {
         throw;
     }
 }
 public static CylData AsCylData(CartData cartData)
 {
     try
     {
         var strip      = new CylData(cartData.FileName);
         var thetaStart = new PointCyl(cartData[0]).ThetaRad;
         foreach (var pt in cartData)
         {
             var ptCyl = new PointCyl(pt);
             strip.Add(ptCyl);
         }
         return(strip);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #9
0
 public ICartData AsCartData()
 {
     try
     {
         var cartData = new CartData(FileName);
         var pts      = new List <IVector3>();
         foreach (var pt in this)
         {
             var newPt = new Vector3(pt);
             pts.Add(newPt);
         }
         cartData.AddRange(pts);
         return(cartData);
     }
     catch (Exception)
     {
         throw;
     }
 }
        static public CartData UnrollCylinderRing(CartData cartData, double scaling, double unrollRadius)
        {
            try
            {
                var    strip       = new CartData(cartData.FileName);
                var    thetaStart  = new PointCyl(cartData[0]).ThetaRad;
                double thetaoffset = Math.PI / 2.0;
                foreach (var pt in cartData)
                {
                    var ptCyl = new PointCyl(pt);

                    strip.Add(UnrollCylPt(ptCyl, thetaoffset, scaling, unrollRadius));
                }
                return(strip);
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #11
0
 /// <summary>
 /// convert cylinder grid to cartesian grid
 /// </summary>
 /// <param name="correctedRingList"></param>
 /// <returns></returns>
 public CartGridData AsCartGridData()
 {
     try
     {
         var stripList = new CartGridData();
         foreach (var cylstrip in this)
         {
             var strip = new CartData(cylstrip.FileName);
             foreach (var ptCyl in cylstrip)
             {
                 strip.Add(new Vector3(ptCyl));
             }
             stripList.Add(strip);
         }
         return(stripList);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #12
0
        public CartData CenterToMidpoint()
        {
            int    midCount = (int)Math.Round(this.Count / 2.0);
            var    minMax   = GetMinMaxY();
            var    midYData = (minMax.Item1 + minMax.Item2) / 2.0;
            double x1       = 0;

            for (int i = 1; i < midCount; i++)
            {
                if ((this[i - 1].Y <midYData && this[i].Y> midYData) ||
                    (this[i - 1].Y > midYData && this[i].Y < midYData))
                {
                    x1 = (this[i - 1].X + this[i].X) / 2.0;
                    break;
                }
            }
            double x2 = 0;

            for (int i = midCount; i < this.Count; i++)
            {
                if ((this[i - 1].Y <midYData && this[i].Y> midYData) ||
                    (this[i - 1].Y > midYData && this[i].Y < midYData))
                {
                    x2 = (this[i - 1].X + this[i].X) / 2.0;
                    break;
                }
            }
            double   midX      = (x1 + x2) / 2.0;
            CartData transData = new CartData(FileName);

            foreach (Vector3 pt in this)
            {
                transData.Add(new Vector3(pt.X - midX, pt.Y, pt.Z));
            }
            return(transData);
        }
Exemple #13
0
 public void RotateDataToLine(IVector3 pt1, IVector3 pt2)
 {
     try
     {
         var _dataRotationRad = GetDataRotation(pt1, pt2);
         var origin           = new Vector3(0, 0, 0);
         var rotStart         = pt1.RotateZ(origin, -1 * _dataRotationRad);
         var rotEnd           = pt2.RotateZ(origin, -1 * _dataRotationRad);
         var vTrans           = new Vector3(0, -1 * rotEnd.Y, 0);
         var rotData          = new CartData();
         foreach (IVector3 pt in data)
         {
             var ptRot   = pt.RotateZ(origin, -1 * _dataRotationRad);
             var ptTrans = ptRot.Translate(vTrans);
             rotData.Add(ptTrans);
         }
         data.Clear();
         data.AddRange(rotData);
     }
     catch (Exception)
     {
         throw;
     }
 }
 public CartDataEnumerator(CartData collection)
 {
     _collection = collection;
     curIndex    = -1;
     currentItem = default;
 }