2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Площадь замкнутого контура
Сообщение18.04.2013, 08:44 


08/03/13
9
Подскажите плиз.
Как можно определить площадь замкнутого контура созданного квадратичными кривыми Безье. Координаты всех точек создающих кривые - известны.
Изначально предполагается что линии контура не будут пересекаться. Как-то так:
Изображение
Я не математик, но указанный вопрос заставил обратиться к математике.
Подскажите плиз ссылкой или кодом.

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение18.04.2013, 08:54 


19/05/10

3940
Россия
Если по точке можно алгоритмично сказать принадлежит она фигуре или нет, то удобно считать методом Монте-Карло

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение18.04.2013, 09:03 


14/01/11
3037
Можно ещё посмотреть на формулу Грина.

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение18.04.2013, 09:36 


08/03/13
9
Я предполагаю что первоначально требуется определить площадь замкнутого контура, как площадь многоугольника, а затем в зависимости от того где располагается третья(регулирующая) точка кривой Безье второго порядка каждого отрезка, вне контура или внутри контура, вычитать или прибавлять площадь кривой к площади многоугольника. Но это всего лишь в теории, а на практике ???
В связи с этим у меня есть вопросы которые я хотел бы для себя выяснить:
1. Отличаются ли методы определения площади многоугольника от его формы или метод один, универсальный. (См. рисунок, зачёркнутое красным - вариант не рассматривается).
2. Подскажите как попроще по координатам трёх точек определить площадь фигуры кривой Безье второго порядка.

-- 18.04.2013, 10:26 --

Насчёт проверки положения третьей точки - внутри или вне многоугольника, кажется погорячился, т.к. точка может лежать вне многоугольника а площадь кривой необходимо будет вычесть. Но всё равно - есть ведь какой-то критерий.

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение18.04.2013, 10:40 


14/01/11
3037
Площадь $S$ области $D$, ограниченной замкнутым контуром $\gamma$, можно найти, посчитав интеграл $\iint \limits_D dx dy$, который можно свести к интегралу по границе этой области, например, $S=\oint \limits_{\gamma}xdy$.
Сегмент квадратичной кривой Безье задаётся соотношением $\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2, \quad  t \in [0,1]$, т.е. $$ \begin{cases}x(t)=(1 - t)^{2}x_0+2t(1 - t)x_1 + t^{2}x_2 \\ y(t)=(1 - t)^{2}y_0+2t(1 - t)y_1 + t^{2}y_2 \end{cases},$$ где $(x_0,y_0),\ (x_1,y_1),\ (x_2,y_2)$ - координаты опорных точек.
Таким образом, вклад рассматриваемого сегмента в вычисляемую площадь составит $\int \limits_0^1 x(t)y'(t)dt$. Осталось всё подставить в выражение для площади, проинтегрировать и просуммировать по всем сегментам.

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение18.04.2013, 20:23 


08/03/13
9
Как-же всё сложно!
Полопатив Тырнет составил примерный алгоритм решения задачи. Прошу дать оценку.
1.Определяем площадь многоугольника созданного на основе отрезков по опорным точкам сегментов кривых Безье второго порядка.
Полученное значение площади может принять положительное или отрицательное значение, это говорит что обход многоугольника идёт против или по часовой стрелке.
2.Циклом проходим по тому-же многоугольнику где в каждой позиции цикла определяем площадь сегмента кривой Безье, а также положение третьей точки кривой относительно вектора заданного опорными точками кривой. Далее:
а. Если обход идет по часовой стрелке а третья точка сегмента находится слева - прибавляем площадь сегмента к площади многоугольника, справа - вычитаем.
б.Если обход против часовой стрелки а третья точка слева - вычитаем, справа - прибавляем.
Разумеется если первоначально площадь многоугольника имеет знак минус - определяем площадь по абсолютному значению.
Ключевые фразы для поисковых систем: "обход контура" и "положение точки относительно прямой".

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение19.04.2013, 07:54 


14/01/11
3037
А как вы собираетесь определять площадь сегмента кривой Безье?

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение19.04.2013, 09:59 


08/03/13
9
А я собственно в данный момент этим и занимаюсь.
Понимаете, картинки формул взятые со страницы:
http://ru.wikipedia.org/wiki/Кривая_Безье
я уже видел, эти картинки видит наверно каждый кто так или иначе сталкивается в работе с кривыми Безье.
Насколько я понимаю, через три точки на плоскости можно провести только одну кривую Безье, значит и решение данного вопроса должно быть в достаточной мере стандартным, что касается двойных интегралов (я же указывал в теме что я не математик), то на них, как и на ряды Фурье, у меня ещё с курса ВМ и ТВ одного из институтов, стойкая аллергия.

-- 19.04.2013, 10:12 --

Спасибо. Я хоть и работаю на C#, но здесь всё понятно, разберусь.

 Профиль  
                  
 
 Re: Площадь замкнутого контура
Сообщение19.04.2013, 10:16 


14/01/11
3037
В общем, если ничего не напутал, получается что-то вроде этого:
Используется синтаксис C++
#define n 100
struct Point
{
   double x;
   double y;
};
Point points[n][3];//координаты опорных точек
double S=0;
Point (*bz)[3]=points;
for (int i=0;i<n;bz++)
   S+=((bz[0]->x*bz[2]->y-bz[0]->y*bz[2]->x)/2.+bz[1]->y*(bz[0]->x-bz[2]->x)+bz[1]->x*(bz[2]->y-bz[0]->y))/3.;

 

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group