Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование фигур с вычислением их площади 
V
    Опции темы
DoZENT
Дата 5.7.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



Привет всем! Необходимо осуществить следующую задачу: Компьютер случайным образом задает координаты 3 точек. Провести через них параболу и треугольник, рассчитать площади образованных фигур. Как это лучше сделать (не очень силен в графике)? Ну треугольник я нарисую, а вот с параболой и вычислением площади проблемы. Как проводить параболу, если 2 точки, допустим, не симметричны относительно третьей (они же по заданию случайно задаются)? Площадь каких конкретно фигур мне вычислять? Ведь треугольник и парабола вроде как не будут пересекаться?.. Ну площадь, например, треугольника я по формуле геррона посчитаю, но в задании говорится фигУР (т.е. их несколько.......). Словом, вопросов много, плюсов за ответы жалеть не буду smile


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Alexeis
Дата 5.7.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



1)Площади сложных фигур вычисляются интегрированием.
2)По 3м точкам всегда можно построить параболу. Для этого нужно решить систему уравнений.
  _
 |a*x1^2 + b*x1 + c = y1;
<a*x2^2 + b*x2 + c = y2;
 |a*x3^2 + b*x3 + c = y3;
  --
3) Зная функцию параболы можно ее протабулировать и построить по кусочкам (отрезками).


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 5.7.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



А можно почитать площать влоб - количество пикселей, которые отличаются от цвета фона...
PM MAIL   Вверх
DoZENT
Дата 5.7.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



Цитата(Alexeis @  5.7.2007,  19:48 Найти цитируемый пост)
1)Площади сложных фигур вычисляются интегрированием.

Как эта сложная фигура хотя бы выглядеть будет? 

Цитата

А можно почитать площать влоб - количество пикселей, которые отличаются от цвета фона...

Понял, а можно рисунок, чтобы знать что закрашивать?


Цитата(Alexeis @  5.7.2007,  19:48 Найти цитируемый пост)
2)По 3м точкам всегда можно построить параболу. Для этого нужно решить систему уравнений.  _ |a*x1^2 + b*x1 + c = y1;<a*x2^2 + b*x2 + c = y2; |a*x3^2 + b*x3 + c = y3;

спасибо, а что здесь a, b, c, x? По заданию у меня есть только координаты точек.

Мужики, можно хоть кусочек кода, пожалуйста  smile . Сдача проекта 10 июля. Принципиально просто не хочу за деньги делать, т.к. в программировании соображаю очень неплохо, как назло проект с математикой и графикой smile

P.S. я в матеке smile 


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
_shef_
Дата 5.7.2007, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 8.6.2007

Репутация: 1
Всего: 1



Цитата(DoZENT @  5.7.2007,  22:58 Найти цитируемый пост)
Понял, а можно рисунок, чтобы знать что закрашивать

 Я вижу проблему так:
Парабола и треугольник построены по одним и тем же точкам - отсюда три замкнутые фигуры
  1. Треугольник
  2. Часть ограниченная стороной треугольника и пораболой (точки 1 и 2)
  3. Часть ограниченная другой стороной треугольника и пораболой (точки 3 и 2)

Вроде не очень понятно но если подумать все получаеться. Просто нарисуй пораболу, поставь на ней три точки и соедини их линиями и ты все увидишь.

По поводу a,b,c - это коэффициенты а x1,x2,x3,y1,y2,y3 - это координаты твоих точек.
Если ты решишь систему относительно a,b и с - то ты можешь подставив их в любое из уравнений найти координату y для любого x. Так и построишь саму пораболу.

 Площадь - интеграл от уравнения пораболы в пределах крайних (по иксу) твоих двух из трех точек.
 Но я не помню как это считаеться, к сожалению smile сори
  

PM MAIL WWW   Вверх
DoZENT
Дата 6.7.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



Цитата(_shef_ @  5.7.2007,  23:47 Найти цитируемый пост)
 Я вижу проблему так:Парабола и треугольник построены по одним и тем же точкам - отсюда три замкнутые фигуры  1. Треугольник  2. Часть ограниченная стороной треугольника и пораболой (точки 1 и 2)  3. Часть ограниченная другой стороной треугольника и пораболой (точки 3 и 2)

Я так понял, вот так вот? Т.е. находить надо площадь заштрихованной фигуры?
Цитата(_shef_ @  5.7.2007,  23:47 Найти цитируемый пост)
По поводу a,b,c - это коэффициенты а x1,x2,x3,y1,y2,y3 - это координаты твоих точек.

Чему в моем случае равны коэффициенты?
Цитата(_shef_ @  5.7.2007,  23:47 Найти цитируемый пост)
 Площадь - интеграл от уравнения пораболы в пределах крайних (по иксу) твоих двух из трех точек. Но я не помню как это считаеться, к сожалению  сори

Может кто подкинет примерчик, pls

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  DSCN1193.JPG 59,25 Kb


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
DoZENT
Дата 6.7.2007, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



В общем делаю так:

Код

Procedure Parabola(A, B, C : TPoint; Var KoefA, KoefB, KoefC : integer);
Var M : Array[1..2, 1..3] Of Extended;
    D, Da, Db : Extended;
Begin
 M[1, 1] := Sqr(A.X) - Sqr(B.X);
 M[1, 2] := A.X - B.X;
 M[1, 3] := A.Y - B.Y;

 M[2, 1] := Sqr(B.X) - Sqr(C.X);
 M[2, 2] := B.X - C.X;
 M[2, 3] := B.Y - C.Y;
 
 D := M[1, 1] * M[2, 2] - M[1, 2] * M[2, 1];

 If D <> 0 Then
  Begin
   Da := M[1, 3] * M[2, 2] - M[2, 3] * M[1, 2];
   Db := M[1, 1] * M[2, 3] - M[1, 2] * M[1, 3];
   KoefA := trunc (Da / D);
   KoefB := trunc (Db / D);
   KoefC := A.Y - KoefA * Sqr(A.X) - KoefB * A.X;
  End
  Else
  Begin
   KoefA := 0; KoefB := 0; KoefC := 0;
  End;
End;

procedure DrawParabola (PP : TPointsPosition);
var
a,b,c : integer;
i : integer;
x : integer;
y : integer;
j : integer;
part : integer;
begin

  Part := 14;

  // Уравнение параболы y = ax2 + bx + c

  with MainForm do
  begin

    Parabola (PP.Point1, PP.Point2, PP.Point3, a,b,c);

    Box.Canvas.MoveTo(1, -25);

     J := -14;
      for i := -25 to 25 do
      begin

        y := a* (i*i) + b*i + c;


        J := J + Part;
        Canvas.LineTo (J, (-1)*y + Box.Height);


      end;

  end;

end;



Но рисуются какие-то совершенно непонятные вещи, на параболу они точно не похожи((( В чем ошибка?


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
_shef_
Дата 9.7.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 8.6.2007

Репутация: 1
Всего: 1



Цитата(DoZENT @  6.7.2007,  14:16 Найти цитируемый пост)
Но рисуются какие-то совершенно непонятные вещи, на параболу они точно не похожи((( В чем ошибка? 

Мне показалось, что ты решаешь квадратное уравнение.
А надо решить систему уравнений, например через определители методом Гауса.
Я пробовал, но давно этого не делал - закопался в букавках.

Хотя вопрос, я так понимаю, уже не актуален
PM MAIL WWW   Вверх
DoZENT
Дата 9.7.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



Цитата(_shef_ @  9.7.2007,  23:12 Найти цитируемый пост)
Хотя вопрос, я так понимаю, уже не актуален

еще как актуален smile



--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
ridik0073
Дата 9.7.2011, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.7.2011

Репутация: нет
Всего: нет



Dozent ты сделал прогу??

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.