Эти формулы не зависят от формы треугольника. Центр описанной окружности может быть в любом месте и её радиус будет вычисляться именно так как я написал.
Другое дело, если ваше понятие "кривизна" зависит от того располагается ли центр окружности на стороне или нет.
Возможно вам нужны кривые Безье или полином второго порядка.
Если имеется ввиду радиус описанной окружности, то она вычисляется по формуле: R=abc/4S, где а, b, c - стороны треугольника, а S - его площадь.
Площадь по трём сторонам считается по формуле Герона: S = sqrt(p*(p-a)*(p-b)*(p-c)), где p = (a+b+c)/2
Длины сторон легко вычисляются по координатам.
Уточняющие вопросы: фигуры располагаются только вдоль столбцов/рядов? могут ли быть другие фигуры? фигуры заданы точно или примерно (то есть есть ли в данных "шум")?
Вы перед открытием порта устанавливаете port.RtsEnable = true;, что накладывает определённые обязательства на отправку-получение. А именно установку ReadyToSend бита перед отправкой сообщения для того, чтобы устройство было готово считать сообщение, и сброс этого бита после прочтения. Windows этим занимается автоматически при установке этого свойства, а arduino - я не знаю.
Во время выполнения FtpWebResponse response = (FtpWebResponse)request.GetResponse(); могут возникнуть исключения, описанные в соответствующем разделе справки https://msdn.microsoft.com/ru-ru/library/system.ne...
В частности, если сервер не ответит в течении времени таймаута, то будет вызвано исключение WebException.
Для обработки исключений где-то, или в методе работы с FTP, или в методах, которые его вызывают должна быть конструкция try-catch, которая обработает данное исключение. Или ваша программа упадёт при возникновении подобной ошибки
Я же дал ссылку на MSDN - там три примера, как минимум. Вот загрузка файла:
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("testfile.txt");
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Ну у тебя в строчке FtpWebResponse response = (FtpWebResponse) request.GetResponse(); будет исключение, либо в response.StatusCode будет результат операции. Исходя из этого делай дальнейшие шаги.
SetWindowsHookEx WH_KEYBOARD или WH_KEYBOARD_LL
Обязательна нужна отдельная DLL для установки глобального хука.
Возможно всё-таки тебе нужнее хук не на клавиатуру, а на очередь сообщений WH_GETMESSAGE и отлавливать чужие сообщения WM_INPUTLANGCHANGE
Для WPF нужен управляющий поток, который должен быть STA.
В консольном приложении это входной поток. Второй в рамках одного процесса вы не сделаете.
Для обработки событий окон вам нужен цикл обработки событий, за который в приложении WPF отвечает Application. Поэтому вам нужно создать Application и запустить его:
Application app = new Application();
MainWindow window = new MainWindow();
app.Run(window);
При этом пока окно Application не закроется метод Run не завершится. То есть если вы что-то дополнительно параллельно захотите делать в консольном приложении, то вам для этого нужен отдельный поток.
Для использования Mvvm добавьте в классы интерфейс INotifyPropertyChanged, а в качестве коллекции элементов используйте ObservableCollection вместо List.
В этом случае при добавлении/удалении элементов строки будут автоматически добавляться и удаляться.
Точка с запятой между операторами:
SET @sort := (SELECT `sort` FROM `phpshop_categories` WHERE id = 7835) ;
UPDATE `phpshop_categories`
SET
`sort` = @sort
WHERE id != 7835
Сравнение insert ... values и select лучше делать на практике.
Теоретически при обработке values должен отработать синтаксический анализатор по всему запросу, а в случае select просто перекладываются уже подготовленные значения.
Кому-то это не преимущества, а у кого-то это условия ТЗ.
Я не утверждаю, что хранение в БД является единственным правильным способом. Просто в ответах были указаны преимущества хранения ссылок, а я указал преимущества хранения в БД.
У меня есть проекты как с одним, так и с другим способом.