Beispiel #1
0
        /// <summary>
        /// вычесление коафицентов методом гаусса-жордана
        /// </summary>
        /// <param name="imgList">список картинок</param>
        /// <param name="w">ширина</param>
        /// <returns></returns>
        public static float[] GausJordan(ImgFile[] imgList,int w)
        {
            var n = imgList.Count();
            var coaf = new float[n, n];
            var res = new float[n];
            for (var i = 0; i < n; i++)
            {
                coaf[0, i] = imgList[i].W;
                if (i == 0) res[i] = w;
                else res[i] = 0;
            }
            for (var i = 0; i < n - 1; i++)
            {
                coaf[i + 1, 0] = imgList[0].H;
                coaf[i + 1, i + 1] = -imgList[i + 1].H;
            }
            var a = coaf;
            var b = res;

            for (var i = 0; i < n - 1; i++)
            {
                for (var j = i + 1; j < n; j++)
                {
                    var s = a[j, i] / a[i, i];
                    for (var k = i; k < n; k++)
                    {
                        a[j, k] -= a[i, k] * s;
                    }
                    b[j] -= b[i] * s;
                }
            }

            for (var i = n - 1; i >= 0; i--)
            {
                b[i] /= a[i, i];
                a[i, i] /= a[i, i];
                for (var j = i - 1; j >= 0; j--)
                {
                    var s = a[j, i] / a[i, i];
                    a[j, i] -= s;
                    b[j] -= b[i] * s;
                }
            }
            return Enumerable.Range(0, n).Select(i => b[i] / a[i, i]).ToArray();
        }
Beispiel #2
0
        /// <summary>
        /// получить раскадровку по горизонтали
        /// </summary>
        /// <param name="width">ширина</param>
        /// <returns></returns>
        public JsonResult GetImgList(string width)
        {
            var w = JsonConvert.DeserializeObject<int>(width);
            var imgList = Helper.GetImgList().ToArray();

            var sol = Helper.GausJordan(imgList,w);

            var newimgList = new ImgFile[imgList.Length];
            for (var i = 0; i < imgList.Length; i++)
            {
                var newImgFile = new ImgFile
                {
                    H = (int) (sol[i]*imgList[i].H),
                    W = (int) (sol[i]*imgList[i].W),
                    Name=imgList[i].Name
                };

                newimgList[i] = newImgFile;
            }

            return Json(newimgList, JsonRequestBehavior.AllowGet);
        }