![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Ира |
|
|||
|
Unregistered |
Помогите, нужна программа на Дельфи. Дана функция от двух переменных, даны две точки. Необходимо найти длину дуги между данными точками на кривой.
|
|||
|
||||
| 78125 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 20.1.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Путем разбиения на дуги. Иного выхода не вижу.
--------------------
купим подпись |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Приветствую!
Можно аппроксимировать функцию сплайном (первой степени) и посчитать длину каждого отрезка, после чего просто сложить. Например взять первую производную в каждой точке (в компьютере их количество небесконечно), потом взять от нее арктангенс (т.е. угол) и взять от этого угла косинус, после чего возвести его в -1 степень (если иметь в виду, что мы разбиваем функцию на единичные отрезки). Т.е. :
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Ира |
|
|||
|
Unregistered |
Это все очень хорошо, но как это будет выглядеть для функции, например, f(x,y)=x*x+5*y*y-8
|
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Мдааа... Я ступил...
.... надо найти кривую пересечения плоскости с функцией... хмм.... Плоскость ведь можно построить довольно лекго... (так... рассуждения...) -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Ира |
|
|||
|
Unregistered |
На самом деле, нужно разбить кривую на мелкие отрезки, потом заменить длину кривой на этом отрезке длиной отрезка. Длина всей дуги будет равна сумме длин маленьких отрезочков. Но как получить точки на кривой, вот в чем проблема.
|
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
Это не кривая, а поверхность
-------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Модератору: тему надо переносить в "технологии и алгоритмы".
Ира, для решения Вашей задачи возможно необходимо взять криволинейный интеграл по длине дуги? Или это не имеет отношения? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
Ира, можно точки эти узнать?
-------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Значит так, если есть функция и координаты точек, то:
I. 1) ищем уравнение пересечения плоскости перпендикулярной плоскости xOy, в которой лежит отрезок AB с уравнением z(x,y). 2) теперь у нас есть уравнение кривой на плоскости и всего-лишь нужно воспользоваться формулой для нахождения дуги (там интеграл от a до b, [sqrt(1+y'(x)^2) dx]) II. 1) воспользоваться формулой для нахождения криволинейного интеграла по длине дуги; 2) по скольку мы будем знать площадь, длину основания |a-b|, и высоты в двух концах z(a), z(b), то найти длину кривой заключенной между концами не составит труда Если Вам еще что-нибудь непонятно, спрашивайте. P.S. В общем советую просто посмотреть в учебник по математике. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
neutrino, похоже, что ты сильно все запутал своими плоскостями.
Проще надо быть - если есть точки x1, y1 и x2, y2, то надо попытаться определить две функции: x = x(t) и y = y(t), где A <= t <= B. Тогда длина кривой между точками: S = Интеграл от A до B ( Корень( x'(t)^2 + y'(t)^2 ) )dt -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Все повторяется... Ровно год назад (или два? или полтора?) какая-то другая девушка поднимала точно такую же задачу, и тоже для примера была данна линия эллипса. Помниться, такой базар развели...
Совершенно верно. Получить ее можно решением квадратного уровнения. Береш х=0, подставляешь и решаешь относительно y. Если решение существует в области рациональных чисел, значит одна точка есть. Прибавляешь прирощение к x и вычисляешь следующий у - вот тебе и отрезок. И т. д. Вообще, легко оценить область допустимых значений х, явно, что для этого выражение оно будет удовлетворять условию: 8/5-(х*х)/5 >= 0 отсюда |x|<= sqrt(8); Ну вот и бери значения от [-sqrt(8), +sqrt(8)]; -------------------- Волны гасят ветер... |
|||
|
||||
| Ира |
|
|||
|
Unregistered |
А как быть в том случае, когда одному х, соответствует не один у. Какое из двух значений выбрать?
|
|||
|
||||
| man2002ua |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 943 Регистрация: 12.11.2002 Где: Киев Репутация: нет Всего: 2 |
Ира, повторюсь, чтобы получилась кривая надо знать:
x = x(t) и y = y(t), где A <= t <= B. -------------------- "Нет ничего более постоянного, чем временное" |
|||
|
||||
| Ира |
|
|||
|
Unregistered |
По условию дано, что кривая задана в общем виде, то есть f(x,y)=0. Так ее вводит пользователь. Нельзя выразить х через у. Как быть в этом случае?
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |