// 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); } }
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; }
/// <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; }
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); }
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); }
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()); } }
/// <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)); }
void on_dimension_meter() { double dimension = InitialDimension * Units.Convert(Units.Linear.Meters, Units.Linear.Millimeters); dimensionInput.text = dimension.ToString("F4"); }