Serial.begin(9600);
Serial.setTimeout(100);
while (true) {
if (Serial.available()) {
turn(Serial.parseInt(), 100, 2, 3, 4, 5, 18);
goto g0;
}
}
g0:
{}
SerialPort port;
port = new SerialPort("COM12", 9600);
port.Open();
port.WriteLine(textBox1.Text);
port.Close();
using System.IO;
using IxMilia.Stl;
StlFile stlFile = new StlFile();
stlFile.SolidName = "my-solid";
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 0, 0)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 100, 0)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(100, 0, 100), new StlVertex(0, 100, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 100), new StlVertex(0, 100, 100), new StlVertex(100, 100, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(100, 0, 0), new StlVertex(0, 0, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(100, 0, 0), new StlVertex(100, 0, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 100, 0), new StlVertex(0, 100, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 100, 100), new StlVertex(100, 100, 0), new StlVertex(100, 100, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(0, 100, 0), new StlVertex(0, 0, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(0, 100, 0), new StlVertex(0, 100, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 0), new StlVertex(100, 100, 0), new StlVertex(100, 0, 100)));
stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 100), new StlVertex(100, 100, 0), new StlVertex(100, 100, 100)));
using (FileStream fs = new FileStream(@"C:\Users\...\1.stl", FileMode.Open))
{
stlFile.Save(fs);
}
{
int res=0, res1=0, res2=0, res3=0, res4=0;
Thread t1 = new Thread(() => {res1 = Plus_2(2); });
Thread t2 = new Thread(() => {res2 = Plus_2(3); });
Thread t3 = new Thread(() => {res3 = Plus_2(4); });
Thread t4 = new Thread(() => {res4 = Plus_2(5); });
//Запускаем вычисление в четыре потока
t1.Start(); t2.Start(); t3.Start();t4.Start();
//Ожидаем завершение всех
t1.Join(); t2.Join(); t3.Join(); t4.Join();
res = res1 + res2 + res3 + res4;// Результат всех вычислений суммируем, в данном случае ответ будет 22
}
static int Plus_2(int a)// метод вычисления
{ int b=2; return a + b;}
List<Vector2> Points = new List<Vector2>(); // List (эквивалент массиву), суда записываются координаты точек (далее).
int[,] array = new int[,] // Сам массив с точками (координатами).
{
{200, 0 },
{0, 200 },
{400, 200 },
{200, 400 },
{600, 400 },
{200, 500 },
{0, 600 },
{400, 600 },
};
Points.Add(new Vector2(0d, 0d)); // К сожалению для библиотеку которую нашел Woldemar89
Points.Add(new Vector2(1000, 0d)); // требует рамки триангуляции и они включаются в саму триангуляцию.
Points.Add(new Vector2(1000, 1000)); // Поэтому это они и есть. <-
Points.Add(new Vector2(0d, 1000));
for (int i = 0; i < array.GetLength(0); i++) // Внесение в List Points точки из массива.
{
Points.Add(new Vector2(array[i, 0], array[i, 1]));
}
Triangulation triangulation = new Triangulation(Points); // Использования самой триангуляции.
for (int i = 0; i < triangulation.triangles.Count; i++) // Вывод координат получившихся треугольников.
{
Console.Write(triangulation.triangles[i].points[0].x + " " + triangulation.triangles[i].points[0].y + " - "); // Треугольник 1.
Console.Write(triangulation.triangles[i].points[1].x + " " + triangulation.triangles[i].points[1].y + " - ");// Треугольник 2.
Console.WriteLine(triangulation.triangles[i].points[2].x + " " + triangulation.triangles[i].points[2].y);// Треугольник 3.
}
class Triangulation
{
public List<Vector2> points = new List<Vector2>();
public List<Triangle> triangles = new List<Triangle>();
private DynamicCache Cache = null;
public Triangulation(List<Vector2> _points)
{
points = _points;
//Инициализация кэша
Cache = new DynamicCache(points[2]);
//Добавление супер структуры
triangles.Add(new Triangle(points[0], points[1], points[2]));
triangles.Add(new Triangle(triangles[0].arcs[2], points[3]));
//Добавление ссылок в ребра на смежные треугольники супер структуры
triangles[0].arcs[2].trAB = triangles[1];
triangles[1].arcs[0].trBA = triangles[0];
//Добавление супер структуры в кэш
Cache.Add(triangles[0]);
Cache.Add(triangles[1]);
Triangle CurentTriangle = null;
Triangle NewTriangle0 = null;
Triangle NewTriangle1 = null;
Triangle NewTriangle2 = null;
Arc NewArc0 = null;
Arc NewArc1 = null;
Arc NewArc2 = null;
Arc OldArc0 = null;
Arc OldArc1 = null;
Arc OldArc2 = null;
for (int i = 4; i < _points.Count; i++)
{
CurentTriangle = GetTriangleForPoint(_points[i]);
if (CurentTriangle != null)
{
//Создание новых ребер, которые совместно с ребрами преобразуемого треугольника образуют новые три треугольника
NewArc0 = new Arc(CurentTriangle.points[0], _points[i]);
NewArc1 = new Arc(CurentTriangle.points[1], _points[i]);
NewArc2 = new Arc(CurentTriangle.points[2], _points[i]);
//Сохранение ребер преобразуемого треугольника
OldArc0 = CurentTriangle.GetArcBeatwen2Points(CurentTriangle.points[0], CurentTriangle.points[1]);
OldArc1 = CurentTriangle.GetArcBeatwen2Points(CurentTriangle.points[1], CurentTriangle.points[2]);
OldArc2 = CurentTriangle.GetArcBeatwen2Points(CurentTriangle.points[2], CurentTriangle.points[0]);
//Преобразование текущего треугольника в один из новых трех
NewTriangle0 = CurentTriangle;
NewTriangle0.arcs[0] = OldArc0;
NewTriangle0.arcs[1] = NewArc1;
NewTriangle0.arcs[2] = NewArc0;
NewTriangle0.points[2] = _points[i];
//Дополнительно создаются два треугольника
NewTriangle1 = new Triangle(OldArc1, NewArc2, NewArc1);
NewTriangle2 = new Triangle(OldArc2, NewArc0, NewArc2);
//Новым ребрам передаются ссылки на образующие их треугольники
NewArc0.trAB = NewTriangle0;
NewArc0.trBA = NewTriangle2;
NewArc1.trAB = NewTriangle1;
NewArc1.trBA = NewTriangle0;
NewArc2.trAB = NewTriangle2;
NewArc2.trBA = NewTriangle1;
//Передача ссылок на старые ребра
if (OldArc0.trAB == CurentTriangle)
OldArc0.trAB = NewTriangle0;
if (OldArc0.trBA == CurentTriangle)
OldArc0.trBA = NewTriangle0;
if (OldArc1.trAB == CurentTriangle)
OldArc1.trAB = NewTriangle1;
if (OldArc1.trBA == CurentTriangle)
OldArc1.trBA = NewTriangle1;
if (OldArc2.trAB == CurentTriangle)
OldArc2.trAB = NewTriangle2;
if (OldArc2.trBA == CurentTriangle)
OldArc2.trBA = NewTriangle2;
triangles.Add(NewTriangle1);
triangles.Add(NewTriangle2);
Cache.Add(NewTriangle0);
Cache.Add(NewTriangle1);
Cache.Add(NewTriangle2);
CheckDelaunayAndRebuild(OldArc0);
CheckDelaunayAndRebuild(OldArc1);
CheckDelaunayAndRebuild(OldArc2);
}
}
//Дополнительный проход
for (int i = 0; i < triangles.Count; i++)
{
CheckDelaunayAndRebuild(triangles[i].arcs[0]);
CheckDelaunayAndRebuild(triangles[i].arcs[1]);
CheckDelaunayAndRebuild(triangles[i].arcs[2]);
}
}
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using AForge;
using AForge.Imaging;
using AForge.Imaging.Filters;
using System.Windows.Forms;
public Bitmap img1 = new Bitmap(@"C:\(путь)\1.bmp", true);
public Bitmap img2 = new Bitmap(@"C:\(путь)\4.bmp", true);
public BitmapImage bi;
public Bitmap grayImage;
Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
img1 = filter.Apply(img1);
img2 = filter.Apply(img2);
Stopwatch st = new Stopwatch();
st.Start();
SusanCornersDetector scd = new SusanCornersDetector(30, 18);
List<IntPoint> points = scd.ProcessImage(img1);
ExhaustiveBlockMatching bm = new ExhaustiveBlockMatching(12, 36);
List<BlockMatch> matches = bm.ProcessImage(img1, points, img2);
Console.WriteLine(matches[0].MatchPoint.X);
Console.WriteLine(matches[0].MatchPoint.Y);
Console.WriteLine(matches[0].Similarity);
Console.WriteLine(matches[0].SourcePoint.X);
Console.WriteLine(matches[0].SourcePoint.Y);
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using AForge;
using AForge.Imaging;
using AForge.Imaging.Filters;
using System.Windows.Forms;
namespace углы
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Bitmap img1 = new Bitmap(@"C:\(путь)\1.bmp", true);
public Bitmap img2 = new Bitmap(@"C:\(путь)\4.bmp", true);
public BitmapImage bi;
public Bitmap grayImage;
private void button1_Click(object sender, EventArgs e)
{
float consta = (float)Convert.ToDouble(textBox1.Text);
Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
img1 = filter.Apply(img1);
img2 = filter.Apply(img2);
Stopwatch st = new Stopwatch();
st.Start();
SusanCornersDetector scd = new SusanCornersDetector(30, 18);
List<IntPoint> points = scd.ProcessImage(img1);
ExhaustiveBlockMatching bm = new ExhaustiveBlockMatching(12, 36);
List<BlockMatch> matches = bm.ProcessImage(img1, points, img2);
//Console.WriteLine(matches[0].MatchPoint.X);
//Console.WriteLine(matches[0].MatchPoint.Y);
//Console.WriteLine(matches[0].Similarity);
//Console.WriteLine(matches[0].SourcePoint.X);
//Console.WriteLine(matches[0].SourcePoint.Y);
st.Stop();
TimeSpan elapsed = st.Elapsed;
label1.Text = "Elapsed time = " + elapsed.ToString();
BitmapData data = img1.LockBits(
new System.Drawing.Rectangle(0, 0, img1.Width, img1.Height),
ImageLockMode.ReadWrite, img1.PixelFormat);
foreach (BlockMatch match in matches)
{
AForge.Imaging.Drawing.FillRectangle(data,
new System.Drawing.Rectangle(match.SourcePoint.X - 1, match.SourcePoint.Y - 1, 3, 3),
System.Drawing.Color.Yellow);
AForge.Imaging.Drawing.Line(data, match.SourcePoint, match.MatchPoint, System.Drawing.Color.Red);
//if (match.Similarity > 0.98f)
if (match.Similarity > consta)
{
// process block with high similarity
}
}
img1.UnlockBits(data);
pictureBox1.Image = img1;
pictureBox2.Image = img2;
}
}
}