Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 15:50   #1
Mazahacka1
 
Регистрация: 21.05.2012
Сообщений: 6
По умолчанию Вращение многоугольника вокруг заданной точки

Координаты точек обращены на угол фи подсчитывает. Проблема соединить их, выдает ошибку. Помогите, буду очень благодарен.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, Spin;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
ListBox1: TListBox;
ListBox2: TListBox;
SpinEdit1: TSpinEdit;
Button1: TButton;
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
x1,y1,sx,sy,n:integer;
xa: array [1..100 ]of integer;
ya: array [1..100 ]of integer;





implementation

{$R *.dfm}

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


begin




if (button=mbright) then
begin
canvas.MoveTo(x,y);
x1:=x;
y1:=y;
listbox1.Items.Add(IntToStr(x));
listbox2.Items.Add(IntToStr(y));

end;
if (ssShift in Shift) then
begin
canvas.LineTo(x,y);
listbox1.Items.Add(IntToStr(x));
listbox2.Items.Add(IntToStr(y));
end;

sx:= StrToInt(listbox1.Items[0]);
sy:= StrToInt(listbox2.Items[0]);

if (((x>(sx-10))and (x<(sx+10)))and((y<(sy+10))and (y>(sy-10)))) then
begin

canvas.LineTo(sx,sy);

end;
end;






procedure TForm1.Button1Click(Sender: TObject);
var i,a,TempX,TempY:integer;
an:real;
p: array of TPoint;
begin
a:=spinedit1.Value;
An:=(a+180)*(3.14/180);

n:=listbox1.Count;
for i:=1 to n do
begin
xa[i]:= StrToInt(listbox1.Items[i-1]);
ya[i]:= StrToInt(listbox2.Items[i-1]);

TempX:=xa[1]-xa[i];
TempY :=ya[1]-ya[i];
p[i].X:=Trunc( Cos( An) * TempX - Sin( An) * TempY );
p[i].Y:=Trunc( Sin( An) * TempX + Cos( An) * TempY );

form1.Canvas.Polygon(p);
end;



end;

end.

Последний раз редактировалось Mazahacka1; 21.05.2012 в 18:25.
Mazahacka1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск всех путей в лабиринте от точки до точки pavel_abelardo Помощь студентам 12 26.06.2011 00:23
Си найти минимальный путь от точки до точки dikr Помощь студентам 4 09.05.2010 11:58
Имеются координаты точки. Как проверить какого цвета соседние точки на форме? Rin Мультимедиа в Delphi 2 10.11.2009 22:47
даны две точки. организовать движение из точки А в точку Б окружности! Wi1D Помощь студентам 6 23.05.2009 19:55
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57