Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Треугольник   Найти похожие ветки 

 
Забывчивый   (2006-07-23 02:03) [0]

Как на событие OnMouseUp нарисовать равнобедренный треугольник с центром X, Y

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
   Form1.Canvas.MoveTo(X, Y-H);
   Form1.Canvas.LineTo(X+H, Y+H);
   Form1.Canvas.LineTo(X-H, Y+H);
   Form1.Canvas.LineTo(X, Y-H);
end;

Т.е. как расчитать Н?


 
Johnmen ©   (2006-07-23 02:08) [1]


> Т.е. как расчитать Н?


Посмотреть в таблице интегралов.


 
Забывчивый   (2006-07-23 02:46) [2]

Можно пример, (кусок кода) с математикой тяжело, а тут надо просто треугольник нарисовать.

точнее H будет разная вот как ее расчитать будет типа так

procedure Treugolnik(const X, Y, H: Integer);
var H1: Integer;
begin
H:=??
Form1.Canvas.MoveTo(X, Y-H);
H:=??
H1:=??
Form1.Canvas.LineTo(X+H, Y+H1);
....
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  Treugolnik(X,Y, 100);
end;

> Посмотреть в таблице интегралов.

Это для меня матом ругаетесь (не в обиду).


 
Rial ©   (2006-07-23 03:59) [3]

Так что такое H все таки ?
Если исходить из

H:=??
Form1.Canvas.MoveTo(X, Y-H);
H:=??
H1:=??
Form1.Canvas.LineTo(X+H, Y+H1);

И надо тебе треугольник равновсторонний (не равнобедренный),
то
H1=2 * H * Tg( Pi / 6) = 2 * H / Sqrt(3)

Ну а равнобедренный при любом H1 получится.

Если же точка твоя - центр теугольника, то
Form1.Canvas.LineTo(X+H1, Y+H2);
H1 = H * Sin(Pi / 6) = H / 2.0;
H2 = H * Sin(Pi / 3) = H * Sqrt(3) / 2


 
Забывчивый   (2006-07-23 16:44) [4]

Спасибо Rial ©
Вот то че надо:

procedure Treugolnik(const X, Y, H: Integer);
var H1, H2: Integer;
begin
 Form1.Canvas.Pixels[X,Y]:=clBlue;
 H1:=Trunc(H*Sin(Pi/6));  // = H / 2.0;
 H2:=Trunc(H*Sin(Pi/3));  // = H * Sqrt(3) / 2
 Form1.Canvas.MoveTo(X, Y-H);
 Form1.Canvas.LineTo(X+H2, Y+H1);
 Form1.Canvas.LineTo(X-H2, Y+H1);
 Form1.Canvas.LineTo(X, Y-H);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 Treugolnik(X,Y, 100);
end;


Офигенный получается треугольник, как раз то, что надо.
Еще раз СПАСИБО большое.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
15-1152959297
DillerXX
2006-07-15 14:28
2006.08.13
Почему компилятор Делфи так быстро работает?


6-1143533342
Sasha73
2006-03-28 12:09
2006.08.13
Копирование файлов по ЛВС с авторизацией?


2-1153776870
Frojok
2006-07-25 01:34
2006.08.13
Узнать о Выключении компьютера


2-1153724657
Darkwing
2006-07-24 11:04
2006.08.13
Доступ к ячейкам excel файла


2-1153667478
KaLLeKa
2006-07-23 19:11
2006.08.13
Как получить текст из ячейки ?