Главная страница
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.049 c
2-1153605815
Забывчивый
2006-07-23 02:03
2006.08.13
Треугольник


6-1143428539
Denisac
2006-03-27 07:02
2006.08.13
Кодировка в сообщении


2-1153902019
VitV
2006-07-26 12:20
2006.08.13
invalid class typecast


15-1152874737
NaLom
2006-07-14 14:58
2006.08.13
Блок инета


2-1153511140
WhiteCat
2006-07-21 23:45
2006.08.13
Проклятый DBGrid