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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с геометрией! Описать окружность вокруг треугольника 
V
    Опции темы
6TITLIZ
  Дата 19.1.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите с проектом по Delphi!

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

P.S. Я в делфи новичок, поэтому заумными командами не бросаться! smile
PM MAIL ICQ   Вверх
Illuminaty
Дата 19.1.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

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



Код

     Part1 := ((X2-X1) * (X2+X1) + (Y2-Y1) * (Y2 + Y1)) / (2.0 * (X2-X1));
     Part2 := ((X3-X1) * (X3+X1) + (Y3-Y1) * (Y3 + Y1)) / (2.0 * (X3-X1)); 
     Part3 := (Y2 - Y1) / (X2 - X1);
     Part4 := (Y3 - Y1) / (X3 - X1); 
     Y := (Part2 - Part1) / (Part4 - Part3); 
     X := Part2 - Part4 * Y; 
     Radius := Sqrt(Sqr(X3 - X) + Sqr(Y3 - Y));

X, Y - центр окружности
Radius - и так понятно
взято отсюда
6TITLIZ, а, вообще, это вопрос по алгоритмам

Это сообщение отредактировал(а) Illuminaty - 19.1.2006, 14:20
PM MAIL ICQ   Вверх
6TITLIZ
  Дата 19.1.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо! smile
PM MAIL ICQ   Вверх
6TITLIZ
Дата 19.1.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если честно, то алгоритм с глюками! smile
При некоторых случаях вылетает с ошибкой EZeroDivide! Как быть? smile
Вот мой сегмент (если разберётесь smile ):
Код

Part1 := ((a[2,1]-a[1,1]) * (a[2,1]+a[1,1]) + (a[2,2]-a[1,2]) * (a[2,2]
            + a[1,1])) / (2.0 * (a[2,1]-a[1,1]));
  Part2 := ((a[3,1]-a[1,1]) * (a[3,1]+a[1,1]) + (a[3,2]-a[1,2]) * (a[3,2]
            + a[1,2])) / (2.0 * (a[3,1]-a[1,1]));
  Part3 := (a[2,2] - a[1,2]) / (a[2,1] - a[1,1]);
  Part4 := (a[3,2] - a[1,2]) / (a[3,1] - a[1,1]);
  Y := Trunc((Part2 - Part1) / (Part4 - Part3));
  X := Trunc(Part2 - Part4 * Y);
  l := Image1.Height div 2;
  m := Image1.Width div 2;
  Radius := Trunc(Sqrt(Sqr(a[3,1] - X) + Sqr(a[3,2] - Y)));
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.Brush.Style := bsClear;
  Image1.Canvas.Ellipse(m+X-Radius,l-Y-Radius,m+X+Radius,l-Y+Radius);


a - двумерный integer массив
PM MAIL ICQ   Вверх
Alexeis
Дата 19.1.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Очевидно ошибка возникает a[2,1] =a[1,1], a[3,1] = a[1,1] просто метод рабатает не при всех значениях координат.
А треугольник имеет какие-то особености или вообще произвольный
(так лень выводить общую формулу smile )


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

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

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


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(6TITLIZ @ 19.1.2006, 16:52 Найти цитируемый пост)

При некоторых случаях вылетает с ошибкой EZeroDivide! Как быть?

проверять не равно ли нулю:
(a[2,1]-a[1,1])
(a[3,1]-a[1,1])
(Part4 - Part3)


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Illuminaty
Дата 19.1.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

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



вершины не могут лежать на одной прямой => существует такая точка k, для которой Xi - Xk <> 0 и Xj - Xk <> 0
Надо найти эту точку и присвоить ей индекс 1
PM MAIL ICQ   Вверх
6TITLIZ
  Дата 19.1.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile

Математика!!! smile

Получается, что прямоугольные треугольники отсекаются?
Извините меня за наглость, но не знаете другой формулы (мои знанья в математике не сильны, я в 11 классе).
И ещё раз уж помогаете: Как определять градусную меру угла, без потерь? У меня формула есть, но угол определяется не правильно! smile

Код

Al := arcsin((2 * S)/(AB*CA));
  Al := (180/pi)*Al;
  Label9.Caption := Label9.Caption + FloatToStr(Al);


S - площадь
AB,CA - образующие стороны

Это сообщение отредактировал(а) 6TITLIZ - 19.1.2006, 19:44
PM MAIL ICQ   Вверх
6TITLIZ
  Дата 31.1.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, где мне могут помочь с выводом формул!
Какие есть форумы по математике? smile
PM MAIL ICQ   Вверх
Guedda
Дата 31.1.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Тебе нужно в раздел :
Алгоритмы


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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