Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизТреугольник Найти похожие ветки
← →
Забывчивый (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c