Вычислить центр и радиус круга на треке

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Вычислить центр и радиус круга на треке

Сообщение AndryG »

Доброе время суток ,уважаемые форумчане!
Столкнулся с необходимостью определения круга на треке ,для своей лаборатории.
На картинке ,которую прилагаю , виден трек в виде петли, вопрос заключается как автоматически определить
его параметры - центр(x,y) и радиус. Трек нарисован на графике XY, точно соответствует пройденным расстояниям и углам.
Большая просьба знающим людям помочь, может кто делал подобную работу или хотя бы натолкнуть на мысль.
Заранее большое спасибо)
Вложения
cir1.png
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение zxc_pavel »

Я бы попробовал "стрелять" из каждой точки лучами на 360 градусов.

1) Если все лучи пересекли кривую, значит ты внутри фигуры
2) Из этих точек найти наиболее равноудаленную от мест пересечения
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Не совсем понял идею, стрелять от куда? Как Вы это представляете? Если можно ,то нарисуйте ,да и круг будет не идеален на треке ,это тоже нужно учесть.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: Вычислить центр и радиус круга на треке

Сообщение IvanLis »

Вам сначала необходимо отделить "круг" от всего остального, это можно сделать проссчитав место пересечения.
Потом вычислить цент круга, это получится относительно, т.к. круг не совсем круг :wink: , но он будет совпадать с "центром масс" координат точек входящих в окружность.
Потом от этого центра считаете расстояние до точек окружности ну и берете, что нужно: max, min или среднее значение.
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Я думал и о таком сценарии, но эта идея не та, которую Вы озвучивали до этого. Если это делать не вручную, то то точка пересечения будет два или более одинаковых элемента массива, я правильно понял вашу идею?

А далее среднее X & Y будет центром,так?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3407
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение Artem.spb »

AndryG писал(а): 02 ноя 2020, 14:48 то то точка пересечения будет два или более одинаковых элемента массива
Не факт, что точки будут одинаковыми. У вас же не непрерывная кривая, я набор точек.
Если есть возможность, выложите массив точек, чтобы поиграться, мне лично самостоятельно их вбивать лень :)
Но я бы попробовал так: локализовать Х можно так: найти отрезок (Xi..Xi+1) на котором располагается 5-6 точек.
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Ок, завтра запишу реальный трек и выложу.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: Вычислить центр и радиус круга на треке

Сообщение IvanLis »

AndryG писал(а): 02 ноя 2020, 17:35 Ок, завтра запишу реальный трек и выложу.
Судя по описанию:
AndryG писал(а): 02 ноя 2020, 11:37Трек нарисован на графике XY, точно соответствует пройденным расстояниям и углам.
У вас не координаты точек, а направление (угол) и расстояние. Но это особо не меняет картины, даже имея координаты точек, можно представить трек как ломаную линию состоящую из отрезков.

Вы же можете каждый с каждым отрезки проверить на пересечение?
Если отрезки пересекаются, то берем внутренние точки (замыкаем их), а внешние лежат за пределами круга.
Я думал именно этот этап не вызовет никаких трудностей.

Что касается центра, то можно упростить и после того как Вы оставили только точки принадлежащие окружности.
Взять из них min & max и вычислить среднее, соответственно по X и Y, это примерно центр и будет.
С радиусом я думаю понятно.
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Спасибо, так ,наверно, стоит и сделать, радиус описывающей окружности у меня так и считается, сейчас описывает весь трек, когда будет окружность или что-то ей подобное, то центр и его радиус автоматом посчитается ,Вы абсолютно правы по поводу вычислений трека, азимут на отрезке и расстояние. Единственное что бы я еще хотел попросить помочь с удалением отрезков средствами labview, так я мыслю на Си могу сделать это не оптимально. Заранее благодарен ,за помощь.

Да и азимут, и расстояние я перевожу в координаты x,y, так что у меня массив точек с координатами.

------------------
Это форум, а не чат.
Нет смысла писать несколько сообщений подряд, у Вас есть доступ к редактированию своих сообщений.

IvanLis
Artem.spb

Activity Автор
professor
professor
Сообщения: 3407
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение Artem.spb »

AndryG писал(а): 02 ноя 2020, 20:55 Единственное что бы я еще хотел попросить помочь с удалением отрезков средствами labview,
Удаление откуда?
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Удаление ненужных хвостов.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3407
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 176 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение Artem.spb »

AndryG писал(а): 02 ноя 2020, 22:33 Удаление ненужных хвостов.
Есть первый элемент окружности и количество -> Array subset
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Да ,но сложность заключается в том, что это пересечение прямых. В общем выкладываю vi - прототип с треками.
Вложения
Untitled 1.vi
(35.96 КБ) 94 скачивания
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5467
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 88 раз

Re: Вычислить центр и радиус круга на треке

Сообщение IvanLis »

AndryG писал(а): 03 ноя 2020, 13:43 Да ,но сложность заключается в том, что это пересечение прямых. В общем выкладываю vi - прототип с треками.
Дальше я надеюсь сложностей не будет.
Untitled_by IvanLis.vi
lv2016
(45.9 КБ) 83 скачивания
1.jpg
2.jpg
AndryG
assistant
assistant
Сообщения: 111
Зарегистрирован: 24 апр 2017, 22:27
Версия LabVIEW: 2016
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Вычислить центр и радиус круга на треке

Сообщение AndryG »

Спасибо огромное)))Какие могут быть дальше сложности ,ведь самое гениальное Вы сделали!
Я думал можно было какими-то методами LV это сделать, но был наверно прав, что такие задачи проще решать на Ci.
Еще раз огромное спасибо, очень приятно, что есть такие толковые люди)
Ответить

Вернуться в «Общие»