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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Геометрическая задача 
:(
    Опции темы
Kraz
Дата 5.12.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Даны произвольный треугольник и окружность. Координаты вершин треугольника и центра окружности вводятся пользователем. Дать ответ на вопрос: "можно ли вписать в данный треугольник окружность с центром в заданной точке?"

Геометрия "говорит" : Чтобы вписать в треугольник окружность, центр окружности должен попасть на пересечение биссектрис треугольника.


Как найти координаты точки пересечения биссектрис логически, если известны координаты вершин треугольника? smile 

PM MAIL   Вверх
maxim1000
Дата 6.12.2006, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



можно, конечно, и искать точку пересечения биссектрис
но здесь этого не требуется
достаточно проверить удовлетворяет ли введённая точка этому условию
так что проверяем
OAB=OAC and OBA=OBC (имеются в виду углы)


--------------------
qqq
PM WWW   Вверх
Kraz
Дата 6.12.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



maxim1000, а как можно это реализовать? 
PM MAIL   Вверх
maxim1000
Дата 6.12.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



?
посчитать углы?
ну например, смотрим скалярное произведение, делим на модули векторов и берём arccos...
или через векторное произведение и arcsin


--------------------
qqq
PM WWW   Вверх
maxim1000
Дата 11.12.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



пусть есть 2 вектора a,b
угол между ними можно считать так:
arccos( (a,b)/(|a|*|b|) )
(a,b)=ax*bx+ay*by
|a|=sqrt(ax*ax+ay*ay)
или через векторное произведение:
arcsin( |[a,b]|/(|a|*|b|) )
|[a,b]|=|ax*by-ay*bx|


--------------------
qqq
PM WWW   Вверх
Kraz
Дата 11.12.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

AB:=sqrt(abs(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))));
  BC:=sqrt(abs(((x2-x3)*(x2-x3))+((y2-y3)*(y2-y3))));
  AC:=sqrt(abs(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))));
  AO:=sqrt(abs(((x1-x4)*(x1-x4))+((y1-y4)*(y1-y4))));
  BO:=sqrt(abs(((x2-x4)*(x2-x4))+((y2-y4)*(y2-y4))));
  CO:=sqrt(abs(((x4-x3)*(x4-x3))+((y4-y3)*(y4-y3))));
  x:=((x1*x4+y1*y4)/(((sqrt(x1*x1+y4*y4))*(sqrt(x1*x1+x2*x2)))));
  ABO:=arctan(x/sqrt(1-sqr(x)));


Постоянно вылетает ошибка 207: Invalid floating point operation
 smile 
PM MAIL   Вверх
TaNK
Дата 11.12.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Kraz @ 11.12.2006,  14:57)
Код

AB:=sqrt(abs(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))));
  BC:=sqrt(abs(((x2-x3)*(x2-x3))+((y2-y3)*(y2-y3))));
  AC:=sqrt(abs(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))));
  AO:=sqrt(abs(((x1-x4)*(x1-x4))+((y1-y4)*(y1-y4))));
  BO:=sqrt(abs(((x2-x4)*(x2-x4))+((y2-y4)*(y2-y4))));
  CO:=sqrt(abs(((x4-x3)*(x4-x3))+((y4-y3)*(y4-y3))));
  x:=((x1*x4+y1*y4)/(((sqrt(x1*x1+y4*y4))*(sqrt(x1*x1+x2*x2)))));
  ABO:=arctan(x/sqrt(1-sqr(x)));


Постоянно вылетает ошибка 207: Invalid floating point operation
 smile

может ты присваиваешь int'y float, посмотри!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Kraz
Дата 11.12.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

может ты присваиваешь int'y float, посмотри! 

Мм.. Нет, ничего такого я не делаю..
PM MAIL   Вверх
volvo877
Дата 11.12.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(TaNK @  11.12.2006,  14:22 Найти цитируемый пост)
может ты присваиваешь int'y float, посмотри! 

Это здесь не при чем... Компилятор этого не пропустит еще в Compile-Time, 207 может быть по одной из след. причин: либо под корнем отрицательное число, либо некорректный параметр ArcTan ...

Это сообщение отредактировал(а) volvo877 - 11.12.2006, 15:59
PM MAIL   Вверх
Kraz
Дата 11.12.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Компилятор этого не пропустит еще в Compile-Time, 207 может быть по одной из след. причин: либо под корнем отрицательное число, либо некорректный параметр ArcTan ...


Там всё по модулю.. откуда там отрицательному числу взяться =\
PM MAIL   Вверх
volvo877
Дата 11.12.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Везде? В последней строке тоже по модулю? А в знаменателе на 0 не проверял? Надо бы проверять...
PM MAIL   Вверх
Kraz
Дата 11.12.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Везде? В последней строке тоже по модулю? А в знаменателе на 0 не проверял? Надо бы проверять... 
 ошибки вылетают на промежутках:

Код

  AB:=sqrt(abs(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))));
  BC:=sqrt(abs(((x2-x3)*(x2-x3))+((y2-y3)*(y2-y3))));
  AC:=sqrt(abs(((x1-x3)*(x1-x3))+((y1-y3)*(y1-y3))));
  AO:=sqrt(abs(((x1-x4)*(x1-x4))+((y1-y4)*(y1-y4))));
  BO:=sqrt(abs(((x2-x4)*(x2-x4))+((y2-y4)*(y2-y4))));
  CO:=sqrt(abs(((x4-x3)*(x4-x3))+((y4-y3)*(y4-y3))));


 smile  smile 
PM MAIL   Вверх
maxim1000
Дата 11.12.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а что, возникают сложности с определением, на какой строке возникла ошибка?


--------------------
qqq
PM WWW   Вверх
Kraz
Дата 11.12.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

а что, возникают сложности с определением, на какой строке возникла ошибка? 
 на любой из вышеперечисленных, в зависимости от введённых данных.. к примеру, если ввести все координаты равные единице, то программа работает корректно..

Это сообщение отредактировал(а) Kraz - 11.12.2006, 17:19
PM MAIL   Вверх
maxim1000
Дата 11.12.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну так значит, надо:
1. найти набор данных, который приводит к ошибке
2. локализовать строку, которая глючит именно для этого набора
3. проанализировать данные и строку и понять, в чём дело


--------------------
qqq
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

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

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

2. Публиковать ссылки на варез

3. Оффтопить

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

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

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


 




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


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

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