Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2009, 16:41   #1
Skrip
Пользователь
 
Аватар для Skrip
 
Регистрация: 04.06.2009
Сообщений: 45
По умолчанию Делфи. Рисование треугольника

Здравствуйте! У меня возникла проблема с алгоритмом..
вот задание:
Решить задачу в соответствии с заданными вариантами и используя функции класса TCanvas нарисовать соответствующие геометрические фигуры
Даны три числа a,b,c. Необходимо определить, существует ли треугольник с такими длинами сторон
Необходимые вычисления я сделала о существовании треугольника. А вот графически его построить не могу.. Не могу сообразить как! Допустим, одну точку задаем в программе откладываем от нее сторону а. Т.о., получается уже две точки..! Как найти третью третью?
Я спокойный, вежливый и уравновешенный человек
Skrip вне форума Ответить с цитированием
Старый 22.12.2009, 22:17   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вам надо просто пересчитать координаты. Т.е. допустим у Вас вершины треугольника имеют координаты A(-1, 1), B(1, -1), C(2, 2). Вы берёте произвольную точку канвы и говорите, что она будет центром координат и задаёте масштаб, допустим m = 10. Координаты в Canvas считаются от левого верхнего угла. Пусть эта точка имеет координаты в Canvas (x, y). Тогда координаты вершин будут такими: A(x-1*m, y-1*m), B(x+1*m, y+1*m), C(x+2*m, y-2*m). Дальше просто подаёте эти точке нужной функции Canvas'а (в Вашем случае Polygon)
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 23.12.2009, 13:55   #3
Skrip
Пользователь
 
Аватар для Skrip
 
Регистрация: 04.06.2009
Сообщений: 45
По умолчанию

хм.. я не поняла..! У меня же даны длины сторон..!а не координаты..! Мне надо каким-то образом вычислить координаты, чтобы уже по точкам построить!
Я спокойный, вежливый и уравновешенный человек
Skrip вне форума Ответить с цитированием
Старый 23.12.2009, 23:11   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

абсолютно ни на что не претендуя...
попробуйте такой код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, c : integer;
  t1, t2, t3 : TPoint;
  ugol : double;
begin
  a := 200;
  b := 200;
  c := 350;
  if (a+b>c) and (b+c>a) and (a+c>b) then begin
    Memo1.Lines.Append('может быть такой!');
    t1.x := 0;
    t1.y := 0;
    t2.x := a;
    t2.y := 0;

    ugol := arccos( (sqr(b) - sqr(a) - sqr(c)) / (2*a*c) );
    t3.x := - trunc(c* cos(ugol));
    if t3.x < 0 then begin
      // сдвигаем весь треугольник по оси X
      t1.x := t1.x - t3.x;
      t2.x := t2.x - t3.x;
      t3.x := t3.x - t3.x; // кстати, тут должен ноль получится...
    end;
    t3.y := trunc(c* sin(ugol));
    Canvas.Polygon([t1, t2, t3]);

    Memo1.Lines.Append('X1, Y1 = '+IntToStr(t1.x)+' , '+IntToStr(t1.y));
    Memo1.Lines.Append('X2, Y2 = '+IntToStr(t2.x)+' , '+IntToStr(t2.y));
    Memo1.Lines.Append('X3, Y3 = '+IntToStr(t3.x)+' , '+IntToStr(t3.y));
  end
  else
    Memo1.Lines.Append('НЕ Может Быть!');

end;

Последний раз редактировалось Serge_Bliznykov; 23.12.2009 в 23:20.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение треугольника blackbanny Общие вопросы C/C++ 1 13.10.2009 13:42
3 отрезка и 3 треугольника Айдар Помощь студентам 8 10.09.2009 22:45
ориентация треугольника Orodret Общие вопросы C/C++ 11 09.06.2009 02:10
вращение треугольника в С++ bum90 Помощь студентам 3 28.04.2009 15:28
Рисование в Делфи Rusl92 Общие вопросы Delphi 16 15.08.2008 11:57