Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Нарисовать линию под углом.


Автор: Peha 31.3.2010, 16:55
Здравствуйте.
Есть исходные данные:
1. Canvas формы.
2. Начальные точки x1, y1 (для Form1.Canvas.MoveTo(x1,y1); )
3. r - длина линии.
4. a - угол поворота, относительно вертикали.

Вопрос: как найти x2, y2 чтоб сделать Form1.Canvas.LineTo(x2,y2); ?

P.S. Уже много времени прошло со времен школы, не отсылайте туда для решения уравнения прямой, голову всю изломал... Очень нужно...

Автор: Bitter 31.3.2010, 17:40
x2 = x1+ sin(a)*r
y2 = y1+ cos(a)*r

Автор: Peha 12.4.2010, 11:56
Немножко не так, я просто уже вообще позабывал все что можно и нельзя...
Короче нашел как нарисовать, вот:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  x1, x2 : integer;
  y1, y2 : integer;
  sinA, cosA : Real;
  a : real;
  r : integer;

begin
  x1 := 200;
  y1 := 200;
  Form1.Canvas.MoveTo(x1, y1);

  a := StrToInt(Edit1.Text) * (pi/180); // Так как аргументом функции может быть только радиан,
                                        // а не угол в градусах, то  переводим

  sinA := sin(a);
  cosA := cos(a);

  r := 1000;
  x2 := round (sinA * r);
  y2 := round (cosA * r);

  Form1.Canvas.LineTo(x1 + x2, y1 + y2);
end;


Только будет рисовать в зеркальном отображении.

Автор: Bitter 13.4.2010, 14:20
Peha, а я что написал?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)