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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 20:03   #1
rombik
Пользователь
 
Регистрация: 11.12.2010
Сообщений: 13
По умолчанию создание треугольника по 3 данным сторонам

Всем привет еще раз)снова возник вопрос,только теперь в 2d
Как построить треугольник по 3-м данным сторонам(не обязательно прямоугольный).и каким инструментом нужно пользоваться(paintbox подойдет?)?
rombik вне форума Ответить с цитированием
Старый 15.12.2010, 20:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как построить треугольник по 3-м данным сторонам
По длинам? Ну я думаю можно, просто нужно будет просчитать углы между сторонами, и построить используя полярные координаты. подойдет любая канва, в том числе и PaintBox

Дописано: форума преобразования координат тут:http://ru.wikipedia.org/wiki/%D0%9F%...B0%D1%82%D1%8B
А получать угол можно по теореме косинусов.
I'm learning to live...

Последний раз редактировалось Stilet; 16.12.2010 в 15:59.
Stilet вне форума Ответить с цитированием
Старый 16.12.2010, 16:36   #3
rombik
Пользователь
 
Регистрация: 11.12.2010
Сообщений: 13
По умолчанию

ок,а покажите форму записи координат пожалуйста

парни,я тут попробовал,ничего не получается,он точки только целые воспринимает,или я может что то не то делаю...помогите найти ошибку
Вложения
Тип файла: rar чертежи.rar (173.4 Кб, 12 просмотров)

Последний раз редактировалось Stilet; 17.12.2010 в 15:53.
rombik вне форума Ответить с цитированием
Старый 17.12.2010, 14:03   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
var
  ... x1, ... : Integer

...

   x1:=Round (a*cos1);
Это надо будет переделать чуть меньше чем полностью
Код:
   x1:=a*cos1;
   y1:=a*sin1;
   x2:=c*cos1;
   y2:=c*sin1;
   PB1.Canvas.MoveTo (10,10);
   PB1.Canvas.LineTo(x1,y1);
   PB1.Canvas.MoveTo(10,10);
    PB1.Canvas.LineTo (x2,y2);
   PB1.Canvas.MoveTo(x1,y1);
   PB1.Canvas.LineTo(x2,y2);
sin1 и cos1 - это син. и кос. угла между сторонами a и b, а не угла от оси абцисс.

И в условии
Код:
if (a+b>c) and (a+c>b) and (c+b>a) then
 begin
не хватает одого end'а.

Последний раз редактировалось Sibedir; 17.12.2010 в 14:07.
Sibedir вне форума Ответить с цитированием
Старый 17.12.2010, 18:00   #5
rombik
Пользователь
 
Регистрация: 11.12.2010
Сообщений: 13
По умолчанию

вот что понял переделал.но все равно нет желаемого результата.кто еще чем поможет?
Вложения
Тип файла: rar чертежи.rar (174.0 Кб, 17 просмотров)
rombik вне форума Ответить с цитированием
Старый 17.12.2010, 19:00   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
   pp:=(a+b+c)/2;
   l:=sqrt(pp*(pp-a)*(pp-b)*(pp-c));
   sin1:=(2*l)/(a*b);
   cos1:=Sqrt(1-sin1*sin1);
   dx := 0;
   if c > b then begin // если угол гамма тупой
     dx := Round (a*cos1);
     cos1 := -cos1;
   end;
   x1:=Round (a*cos1);
   y1:=Round (a*sin1);
   x2:=Round (b);
   y2:=Round (0);
   PB1.Canvas.MoveTo (   10+dx,   10);
   PB1.Canvas.LineTo (x1+10+dx,y1+10);
   PB1.Canvas.LineTo (x2+10+dx,y2+10);
   PB1.Canvas.LineTo (   10+dx,   10);

Последний раз редактировалось Sibedir; 17.12.2010 в 19:19.
Sibedir вне форума Ответить с цитированием
Старый 17.12.2010, 19:39   #7
rombik
Пользователь
 
Регистрация: 11.12.2010
Сообщений: 13
По умолчанию

спс большое))
rombik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание треугольника, сумма двух сторон больше третьей Gyugo Microsoft Office Excel 1 28.01.2010 17:24
Создание вложенного меню по данным из TreeView Alter Компоненты Delphi 1 24.05.2009 20:25
Составить программу идентификации треугольника по сторонам a, b, с. dadka Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 11:47
Доступ к данным buk Microsoft Office Excel 2 11.07.2007 09:44
Создание класс с использованием методов доступа к данным El_Bint0 Помощь студентам 1 14.03.2007 10:16