Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.03.2010, 21:42
katena1 katena1 вне форума
Прохожий
 
Регистрация: 29.03.2010
Сообщения: 1
Репутация: 10
По умолчанию пересекающиеся окружности

Помогите пожалуйста, здать надо завтро =(

вот задание:Вводятся координаты центра и радиусы двух окружностей. Определить размер проекции на оси Х и У только второй окружности.
написать программу на любом языке.

архив проги со всеми файлами 900кб надеюсь не отнему у вас много траффика http://narod.ru/disk/19211658000/10.zip.html

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

вот место в котором все косяки, так =):
rad1,rad2 радиусы соотв окружностей

Код:
if er>0 then messagedlg('Данные введены неверно!',mtError,[mbOk],0) else
   begin
    if ((r1-rad1)<(r3-rad2)) and ((r1+rad1)>(r3+rad2)) and ((r2+rad1)>(r4+rad2)) and ((r2-rad1)<(r4-rad2))
      then begin ox:=0; oy:=0; end else
    begin
      if ((r1+rad1)>(r3-rad2)) and ((r1-rad1)<(r3-rad2)) then OX:=rad2*2-abs((r1+rad1)-(r3-rad2)) else
        if ((r1-rad1)>=(r3-rad2)) and ((r1+rad1)<=(r3+rad2))and (rad2>rad1) then OX:= rad2*2-rad1*2 else
          if ((r3+rad2)>(r1-rad1)) and ((r3+rad2)<(r1+rad1)) then OX:=rad2*2-abs((r3+rad2)-(r1-rad1)) else
            if ((r3+rad2)<= (r1-rad1)) or ((r1+rad1)<=(r3-rad2)) then OX:=rad2*2 else
              Ox:=0;

      if ((r2+rad1)>(r4-rad2)) and ((r2-rad1)<(r4-rad2)) then Oy:=rad2*2-abs((r2+rad1)-(r4-rad2)) else
        if ((r2-rad1)>=(r4-rad2)) and ((r2+rad1)<=(r4+rad2)) and (rad2>rad1) then Oy:= rad2*2-rad1*2 else
          if ((r4+rad2)>(r2-rad1)) and ((r4+rad2)<(r2+rad1)) then Oy:=rad2*2-abs((r4+rad2)-(r2-rad1)) else
            if ((r4+rad2)<= (r2-rad1)) or ((r2+rad1)<=(r4-rad2)) then Oy:=rad2*2 else
              Oy:=0;


зы спасибо заранее =-)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter