Example #1
0
        // compute bitmap for each slice (maybe do on demand?)
        void compute_slice_images()
        {
            // construct bounding box and add buffer region
            AxisAlignedBox3d bounds   = Stack.Bounds;
            double           bufferMM = 1;

            bounds.Expand(bufferMM);
            Vector3d center = bounds.Center;

            // will create a bitmap with this dots-per-inch
            double dpi  = 300;
            double dpmm = dpi / Units.Convert(Units.Linear.Inches, Units.Linear.Millimeters);

            CurrentDPIMM = (float)dpmm;

            // pixel dimensions of image
            int width  = (int)(bounds.Width * dpmm);
            int height = (int)(bounds.Height * dpmm);

            // backgroun and object colors
            SKColor bgColor  = SkiaUtil.Color(0, 0, 0, 255);
            SKColor objColor = SkiaUtil.Color(255, 255, 255, 255);

            // function that maps from input coordinates to pixel space
            Func <Vector2d, SKPoint> mapToSkiaF = (origPt) => {
                origPt.y = -origPt.y;                 // [RMS] !!! flip Y here? if we don't do this the
                // polylines we draw below don't match up. But maybe
                // its the polylines that are wrong??
                origPt   *= dpmm;
                origPt.x += width / 2; origPt.y += height / 2;
                return(new SKPoint((float)origPt.x, (float)origPt.y));
            };

            foreach (PlanarSlice slice in Stack.Slices)
            {
                var    bitmap = new SKBitmap(width, height, SkiaUtil.ColorType(), SKAlphaType.Premul);
                IntPtr len;
                using (var skSurface = SKSurface.Create(bitmap.Info.Width, bitmap.Info.Height, SkiaUtil.ColorType(), SKAlphaType.Premul, bitmap.GetPixels(out len), bitmap.Info.RowBytes)) {
                    var canvas = skSurface.Canvas;
                    canvas.Clear(bgColor);

                    using (var paint = new SKPaint()) {
                        paint.IsAntialias = false;
                        paint.Style       = SKPaintStyle.Fill;
                        paint.Color       = objColor;
                        foreach (GeneralPolygon2d poly in slice.Solids)
                        {
                            SKPath path = SkiaUtil.ToSKPath(poly, mapToSkiaF);
                            canvas.DrawPath(path, paint);
                        }
                    }
                }

                SliceImages.Add(bitmap);
            }
        }
Example #2
0
    private void UpdateVisuals()
    {
        var displayUnit = (m_RulerDisplayType == Units.Type.Metric) ? Units.RulerUnit.Centimeters : Units.RulerUnit.Inches;
        // Convert Value to proper Unit if necessary
        float displayValue = Units.Convert(m_RulerDisplayType, m_RulerUnit, displayUnit, m_Value);

        // Format String output
        string txt = Units.Format(m_RulerDisplayType, displayUnit, displayValue);

        displayText.text = txt;
    }
Example #3
0
    /// <summary>
    /// Expected value in Meters
    /// </summary>
    public void Set(float val, bool sendCallback)
    {
        Units.RulerUnit fromUnit = Units.RulerUnit.Meters;
        if (m_RulerDisplayType == Units.Type.Standard)
        {
            fromUnit = Units.RulerUnit.Feet;
            val      = val * Units.k_MToFt;
        }
        m_Value = Units.Convert(m_RulerDisplayType, fromUnit, m_RulerUnit, val);

        rulerSlider.SetValue(m_Value, false);

        if (sendCallback)
        {
            m_OnValueChanged.Invoke(Get());
        }

        m_VisualsDirty = true;
    }
Example #4
0
 public void ConvertTemperature()
 {
     Assert.AreEqual(273.15d, Units.Convert(0d, Units.DegreesCelsius, Units.Kelvin), 1e-9);
     Assert.AreEqual(491.67d, Units.Convert(0d, Units.DegreesCelsius, Units.Rankine), 1e-9);
     Assert.AreEqual(32d, Units.Convert(0d, Units.DegreesCelsius, Units.DegreesFahrenheit), 1e-9);
 }
Example #5
0
 public void Convert()
 {
     Assert.AreEqual(24d, Units.Convert(2d, Units.Foot, Units.Inch), 1e-9d);
     Assert.AreEqual(2000d, Units.Convert(2d, Units.Kilometer, Units.Meter), 1e-9d);
     Assert.AreEqual(1.663e-4, Units.Convert(1d, Units.Furlong / Units.Fortnight, Units.Meter / Units.Second), 1e-7d);
 }
Example #6
0
        static void Main(string[] args)
        {
            void PrintMenu()
            {
                Console.WriteLine();
                Console.WriteLine("0. Выход");
                Console.WriteLine("1. Комплексные числа");
                Console.WriteLine("2. Шахматная доска");
                Console.WriteLine("3. Даты");
                Console.WriteLine("4. Числа Армстронга");
                Console.WriteLine("5. Кол-во квадратов");
                Console.WriteLine("6. К1 Треугоьник(В1)");
                Console.WriteLine("7. К2 Проверка на четность");
                Console.WriteLine("8. К3 Проверка принадлежности точки фигуре");
                Console.WriteLine("9. К4 Дан порядковый номер месяца, вывести на экран количество месяцев оставшихся до конца года.");
                Console.WriteLine("10. К5 Таблица конвертации дюймов в сантиметры");
                Console.WriteLine("11. К6  Печать по шаблону");
                Console.WriteLine();
            }

            PrintMenu();

            int button = int.Parse(Console.ReadLine());

            while (button != 0) //0 - exit
            {
                switch (button)
                {
                case 1:    //Комплексные числа
                {
                    Complex c1 = new Complex(1, 1);
                    Complex c2 = new Complex(1, 1);
                    Complex c3 = (Complex.sum(c1, c2));
                    Console.WriteLine(Complex.ToString(c3));

                    Complex c11 = new Complex(1, 1);
                    Complex c21 = new Complex(1, -101);
                    Complex c31 = (Complex.sum(c11, c21));
                    Console.WriteLine(Complex.ToString(c31));
                }
                break;

                case 2:    //Доска
                {
                    Console.WriteLine("1-готовые доски, 2-своя доска");
                    int flag = int.Parse(Console.ReadLine());
                    switch (flag)
                    {
                    case 1:
                    {
                        Desk Desk1   = new Desk(10, 2, 2, 3, 3, 1);                 //Пешка +
                        Desk Desk1no = new Desk(10, 2, 2, 3, 2, 1);                 //Пешка -
                        Desk Desk2   = new Desk(10, 2, 2, 3, 3, 2);                 //Слон +
                        Desk Desk2no = new Desk(10, 2, 1, 3, 3, 2);                 //Слон -
                        Desk Desk3   = new Desk(10, 2, 2, 2, 3, 3);                 //Ладья +
                        Desk Desk3no = new Desk(10, 2, 2, 3, 3, 3);                 //Ладья -
                        Desk Desk4   = new Desk(10, 2, 2, 3, 3, 4);                 //Ферзь +
                        Desk Desk4no = new Desk(10, 2, 2, 3, 4, 4);                 //Ферзь -
                        Desk Desk5   = new Desk(10, 2, 2, 4, 1, 5);                 //Конь +
                        Desk Desk5no = new Desk(10, 2, 2, 4, 2, 5);                 //Конь -

                        Console.WriteLine("Количество клеток на доске со стороной " + Desk1.n + "=" + Desk.Count(Desk1));

                        Desk.Eating(Desk1);                //Проверка атаки
                        Desk.Eating(Desk1no);
                        Desk.Eating(Desk2);
                        Desk.Eating(Desk2no);
                        Desk.Eating(Desk3);
                        Desk.Eating(Desk3no);
                        Desk.Eating(Desk4);
                        Desk.Eating(Desk4no);
                        Desk.Eating(Desk5);
                        Desk.Eating(Desk5no);
                    }
                    break;

                    case 2:
                    {
                        Console.WriteLine("Введите размер стороны шахматной доски");
                        int size = int.Parse(Console.ReadLine());

                        Console.WriteLine("Введите тип фигуры 1-пешка, 2-слон, 3-Ладья, 4-Ферзь, 5-конь");
                        int fig = int.Parse(Console.ReadLine());

                        Console.WriteLine("Введите координаты атакующей фигуры");
                        int xAtt = int.Parse(Console.ReadLine());
                        int yAtt = int.Parse(Console.ReadLine());


                        Console.WriteLine("Введите координаты другой фигуры");
                        int xDef = int.Parse(Console.ReadLine());
                        int yDef = int.Parse(Console.ReadLine());

                        Desk DeskInput = new Desk(size, xAtt, yAtt, xDef, yDef, fig);
                        Console.WriteLine("Количество клеток на доске со стороной " + DeskInput.n + "=" + Desk.Count(DeskInput));

                        Desk.Eating(DeskInput);
                    }
                    break;

                    default:
                        Console.WriteLine("Ошибка");
                        break;
                    }

                    Console.WriteLine("Цвет клетки: Введите 2 числа - координаты клетки");        //Цвет клетки
                    int k = int.Parse(Console.ReadLine());
                    int m = int.Parse(Console.ReadLine());
                    Console.WriteLine(Desk.Color(k, m));

                    Console.WriteLine("Одинаковый цвет двух клеток :Введите 2 числа - координаты первой клетки");        //Одинаковый цвет
                    int k1 = int.Parse(Console.ReadLine());
                    int m1 = int.Parse(Console.ReadLine());
                    Console.WriteLine("Введите 2 числа - координаты второй клетки");
                    int k2 = int.Parse(Console.ReadLine());
                    int m2 = int.Parse(Console.ReadLine());
                    Console.WriteLine(Desk.SameSquare(k1, m1, k2, m2));
                }
                break;

                case 3:    //Даты
                {
                    DateTime d1 = new DateTime(2020, 02, 29);

                    DateTime nowDate    = DateTime.Now;
                    string   passedDays = Date.daysFromStart(d1);       // Количество дней с даты d1
                    Console.WriteLine(passedDays);

                    string remainDays = Date.daysToEnd(d1);         // Количество дней с даты d1 до конца года
                    Console.WriteLine(remainDays);

                    Console.WriteLine("Yesterday - {0}.{1}.{2}", (d1.AddDays(-1)).Year, (d1.AddDays(-1)).Month, (d1.AddDays(-1)).Day);         //d-1
                    Console.WriteLine("Tomorrow - {0}.{1}.{2}", (d1.AddDays(1)).Year, (d1.AddDays(1)).Month, (d1.AddDays(1)).Day);             //d+1
                }
                break;

                case 4:    //Числа Армстронга 1^3 + 5^3 + 3^3 = 153.
                {
                    Armstrong.armstrong();
                }
                break;

                case 5:     //Кол-во квадратов
                {
                    Console.WriteLine("Введите стороны прямоугольника");
                    Console.Write("a=");
                    int firstSide = int.Parse(Console.ReadLine());
                    Console.Write("b=");
                    int secondSide = int.Parse(Console.ReadLine());
                    Console.WriteLine("Кол-во больших квадратов = " + Square.Squares(firstSide, secondSide));
                    Console.WriteLine("Кол-во маленьких квадратов = " + firstSide * secondSide);
                }
                break;

                //В 20
                case 6:    // K1  Треугоьник(В1)  1.	площадь равностороннего треугольника, периметр которого равен p;
                {
                    Console.Write("Введите периметр треугольника p=");
                    int P = int.Parse(Console.ReadLine());
                    Console.WriteLine("Площадь равностороннего треугольника = " + RightTriangle.Area(P));
                }
                break;

                case 7:     //К2    1.	является ли заданное целое число четным;
                {
                    Console.Write("Является ли заданное целое число четным.\n введите число n=");
                    int num = int.Parse(Console.ReadLine());
                    Console.WriteLine(EvenNumber.Check(num));
                }
                break;

                case 8:    //К3 20. Проверка принадлежности точки фигуре
                {
                    Figure.FigureCheck();
                }
                break;

                case 9:    //К4 1.	Дан порядковый номер месяца, вывести на экран количество месяцев оставшихся до конца года.
                {
                    Months.ToEndOfYear();
                }
                break;

                case 10:     //К5 4. таблица перевода расстояний в дюймах в сантиметры для значений 2, 4, 6, …, 12 дюймов (1 дюйм = 25.4 мм);
                {
                    Units.Convert();
                }
                break;

                case 11:     //К6 20 печать по шаблону
                {
                    TrianglePrint.Print();
                }
                break;
                }

                PrintMenu();
                button = int.Parse(Console.ReadLine());
            }
        }
Example #7
0
    /// <summary>
    /// Returns value of Ruler in Feet or Meters
    /// </summary>
    public float Get()
    {
        var returnUnit = (m_RulerDisplayType == Units.Type.Metric) ? Units.RulerUnit.Meters : Units.RulerUnit.Feet;

        return(Units.Convert(m_RulerDisplayType, m_RulerUnit, returnUnit, m_Value));
    }
Example #8
0
    void on_dimension_meter()
    {
        double dimension = InitialDimension * Units.Convert(Units.Linear.Meters, Units.Linear.Millimeters);

        dimensionInput.text = dimension.ToString("F4");
    }