| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Кривая по эксперементальным точкам

Кривая по эксперементальным точкам

Ответ
Поиск в этой теме
Непрочитано 13.11.2008, 03:06 #1
Кривая по эксперементальным точкам
megicean
 
Регистрация: 13.11.2008
Сообщений: 7

Имеется набор эксперементальных точек. Как по ним провести оптимальную кривую и определить ее радиус, длину и т.д.
Просмотров: 3434
 
Непрочитано 13.11.2008, 08:06
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


По таким данным дать вариант решения практически нереально. Образец с исходными точками и результатом - это военная тайна?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.11.2008, 13:02
#3
megicean


 
Регистрация: 13.11.2008
Сообщений: 7


Почему военная тайна?
У меня есть идея решения через аппроксимащию точек окружностью, но проблема в сложности реализации на VBA.
megicean вне форума  
 
Непрочитано 13.11.2008, 13:17
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Перевожу: dwg-файл гиде?
И, кстати, что на VBA надо делать, можно было сразу сказать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.11.2008, 13:36
#5
megicean


 
Регистрация: 13.11.2008
Сообщений: 7


Уточняю проблему.
Имеется таблица точек с координатами X и Y полученных в результате съемки некоторого криволинейного участка. Известно, что эти точки принадлежат кривой. Как через эти точки провести правельную кривую, чтобы она проходила как можно точненее через эти точки и определить радиус кривой.

Язык программирования не важен. Главное сам алгоритм решения.
megicean вне форума  
 
Непрочитано 13.11.2008, 13:53
#6
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Поробую задать наводящий вопрос: что подразумевается под понятием "правильная кривая"? Если сплайн какого либо вида и АвтоКАД поддерживает работу со сплайнами нужного типа, то просто загнать координаты точек в узлы сплайна.
Alaspher вне форума  
 
Автор темы   Непрочитано 13.11.2008, 19:16
#7
megicean


 
Регистрация: 13.11.2008
Сообщений: 7


Правильная кривая - подразумевается кривая с постоянным радиусом (окружность). Сплаин не подойдет.
megicean вне форума  
 
Непрочитано 13.11.2008, 19:54
#8
Grant

проектирование
 
Регистрация: 14.02.2005
Сообщений: 110


Если желаете провести кривую через некоторые точки - то Вам нужна нелинейная интерполяция. Выполняется, к примеру, полиномом Лагранжа.

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

Если у Вас есть координаты точек ОКРУЖНОСТИ, то, как я сказал, достаточно трех, и все очевидно...

Последний раз редактировалось Grant, 13.11.2008 в 20:25.
Grant вне форума  
 
Непрочитано 13.11.2008, 21:18
#9
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


DwgRuLispLib: Геометрия. Принадлежность точки дуге
Елпанов Евгений вне форума  
 
Непрочитано 13.11.2008, 21:52
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Да уж с постановкой задач дело обстоит очень туго, не добавить ли в FAQ правила создания тем в рубрике программирование (особенно если это запрос на написание программы). Я так понял нужна прога проводящая дугу максимально близкую к набору точек, при чем определение макимально близкой автор не дает. Следующий код создает дугу по трем точкам, по следующему алгоритму - первая и последняя точки в таблице - есть крайние точки дуги, проходит через одну из центральных точек, выбрая по принципу наименьшего сумарного отклонения расстояния других точек от дуги. Таблица должна состоять из двух столбцов (x и y соответственно (см. пример))
Код:
[Выделить все]
(vl-load-com)
(defun gettabledata (tbl / lst lst1 rows col); возращает список списков по строкам таблицы
(setq row 0 col 0 tbl (vlax-ename->vla-object tbl))
(repeat (vla-get-rows tbl)
(repeat (vla-get-columns tbl)
(setq lst (append lst (list (vla-gettext tbl row col))))
(setq col (1+ col))
);end of repeat
;(if lst1
(setq lst1 (append lst1 (list lst)))
;(setq lst1 (list lst))
;);end of if
(setq row (1+ row) col 0 lst nil)
);end of repeat
lst1
);end gettabledata

(defun c:optimum ( / tbl lst tmp cnt R first eend)
(setq tbl (car (entsel "Выберите таблицу ")))
(if tbl (if (= (cdr (assoc 0 (entget tbl))) "ACAD_TABLE")
(progn
(setq 	lst (mapcar '(lambda (lst) (mapcar '(lambda (x) (atof x))lst)) (gettabledata tbl))
		first (car lst) eend (last lst) lst (cdr (reverse (cdr (reverse lst))))
		tmp (mapcar '(lambda (pt)
		; не стал я париться с вычислением центра дуги по трем точкам и сделал так
		(command "_arc" "_none" first "_none" pt "_none" eend)
		(setq 	cnt (cdr (assoc 10 (entget (entlast))))
			R (cdr (assoc 40 (entget (entlast))))
		);end of setq
		(entdel (entlast))
		; да стыдно за математику - есть желающие исправьте
		(apply '+ (mapcar '(lambda (x) (abs (- (distance cnt x) R)) )lst))
		); end of lambda
	lst); end of mapcar
);end of setq
(setq cnt (nth (vl-position (apply 'min tmp) tmp) lst))
(command "_arc" "_none" first "_none" cnt "_none" eend)
);end of progn
(princ "\nЭто не таблица")
);end of if
(princ "\nНичего не выбрано")
);end of if
(princ)
);end of optimum
P.S. Запускать командой "optimum"
Вложения
Тип файла: dwg
DWG 2004
пример.dwg (35.8 Кб, 346 просмотров)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 13.11.2008, 22:00
#11
Patrick Henry


 
Сообщений: n/a


Цитата:
Сообщение от megicean Посмотреть сообщение
Имеется набор эксперементальных точек. Как по ним провести оптимальную кривую и определить ее радиус, длину и т.д.
Вообще говоря кривую можно провести по методу наименьших квадратов. Сделать это можно в электронных таблицах, программе wxMaxima и в прочих пакетах, программах, программищах. Понятие оптимальности в данном случае относительно и кривые проводятся из разных соображений, например исходя из закона распределения погрешности экспериментальных данных и т.д.
Радиус кривизны в смысле? По формуле через производные и уравнение кривой. Длину туда же.
Или что то не так понял?
Вложения
Тип файла: zip Linear.zip (271.1 Кб, 61 просмотров)
 
 
Автор темы   Непрочитано 13.11.2008, 22:50
#12
megicean


 
Регистрация: 13.11.2008
Сообщений: 7


Прошу прощения за не точную постановку задачи.

Производится электронным тахеометром съемка железнодорожного пути.
Получается набор точек. На железной дороге путь представляется как прямые и кривые участки. Параметрами для этих участков является:
- если прямой путь, то длинна прямого участка;
- если кривая, то радиус кривой, длинна кривой, начало и конец кривой.
При съемки визуально определить начало и конец кривой нет возможности. Так вот собственно и вопрос как определить параметри кривой по результатам съемки. Прямой участок определить не состовляет труда.

P.S. Реальзовать необходимо в AutoCADе (желательно при помощи VBA ).
megicean вне форума  
 
Непрочитано 13.11.2008, 23:14
#13
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


пипец
что такое "набор точек?", в каком виде мы его получаем? Критерии по которым отделять кривые от прямых...
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 13.11.2008, 23:58
#14
megicean


 
Регистрация: 13.11.2008
Сообщений: 7


Нобор точек - имеется в виду текстовый файл где в каждой строке через пробел хранятся координаты точки X Y Z.
Достаточно допустить что в файле хранятся точки только кривого участко.
megicean вне форума  
 
Непрочитано 14.11.2008, 09:21
#15
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от megicean Посмотреть сообщение
Нобор точек - имеется в виду текстовый файл где в каждой строке через пробел хранятся координаты точки X Y Z.
Достаточно допустить что в файле хранятся точки только кривого участко.
давно бы уже дал пример файла...
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Кривая по эксперементальным точкам

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кривая с уклоном phantom_l AutoCAD 27 28.07.2008 12:44
кривая кровля - как делать? Makc Архитектура 11 02.12.2007 22:48
Присвоение блоков точкам FedoZZZ AutoCAD 5 14.11.2007 10:59
Кривая в плане плита ALM Прочее. Программное обеспечение 1 09.07.2007 13:34
Получение гладких поверхностей по базовым точкам Laumes AutoCAD 2 10.11.2006 14:31