![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Треугольник [D7, XP]
Забывчивый © (2006-07-23 02:03:00)Как на событие 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;
Т.е. как расчитать Н?
Забывчивый (2006-07-23 16:44:00) [1]Спасибо 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;
Офигенный получается треугольник, как раз то, что надо.
Еще раз СПАСИБО большое.
Rial (2006-07-23 03:59:00) [2]Так что такое 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 02:46:00) [3]Можно пример, (кусок кода) с математикой тяжело, а тут надо просто треугольник нарисовать.
точнее 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;
> Посмотреть в таблице интегралов.
Это для меня матом ругаетесь (не в обиду).
Johnmen (2006-07-23 02:08:00) [4]
> Т.е. как расчитать Н?
Посмотреть в таблице интегралов.