Подскажите пожалуйста.
У меня даны координаты точек. Эти точки нужно последовательно соединить с помощью DrawPoly. координат много (приведу в пример несколько):
(7,0), (7,-1), (6.5,-2.5) и т.д.
Эти координаты нужно как-то переводить в пиксели?Я правильно понимаю?Если да,то как это сделать?
спасибо, я попробую. О результате отчитаюсь:)
у меня не получается...чего-то не понимаю наверное... посмотрите что не так,пожалуйста. Изображение "вверх-ногами" выводится:(
const x:array[1..35] of real=(7,8,7,5,2,-1,-3,-5,-5,-6,-7,-7.5,-10,-9.5,-7,-5,-5,-4,-4,-5,-4,-3,-3,-2,-2,
1,3.5,5,6,5,6,7,6.5,7,7);
y:array[1..35] of real=(-3,-2,2,3,3,3,4,6,7,6,6,5.5,5.5,4.5,4,2,0,-2,-5.5,-6.5,-6.5,-5.5,-3,-2,-1,
-1,-0.5,-2,-5.5,-6.5,-6.5,-5.5,-2.5,-1,0);
var xmin,xmax,ymin,ymax,dx,dy,mx,my:real;
i:byte;
a:array[1..35] of PointType;
begin
setcolor(white);
xmin:=-10; xmax:=8; dx:=18;
ymin:=-6.5; ymax:=7; dy:=13.5;
mx:=640/dx; my:=480/dy;
for i:=1 to 35 do begin
x[i]:=(x[i]-xmin)*mx;
y[i]:=(y[i]-ymin)*my;
end;
for i:=1 to 35 do begin
a[i].x:=trunc(x[i]);
a[i].y:=trunc(y[i]);
end;
drawpoly(35,a);
readln;
CloseGraph;
end.
Так лучше?
uses graph;
const
x:array[1..35] of real=(
7,8,7,5,2,-1,-3,-5,-5,-6,-7,-7.5,-10,-9.5,-7,-5,-5,-4,-4,-5,-4,-3,-3,
-2,-2,1,3.5,5,6,5,6,7,6.5,7,7);
y:array[1..35] of real=(
-3,-2,2,3,3,3,4,6,7,6,6,5.5,5.5,4.5,4,2,0,-2,-5.5,-6.5,-6.5,-5.5,-3,
-2,-1,-1,-0.5,-2,-5.5,-6.5,-6.5,-5.5,-2.5,-1,0);
var
xmin,xmax,ymin,ymax,dx,dy,mx,my:real;
i:byte;
a:array[1..36] of PointType;
var
gd, gm: integer;
begin
initgraph(gd, gm, '');
setcolor(white);
xmin:=-10; xmax:=8; dx:=18;
ymin:=-6.5; ymax:=7; dy:=13.5;
mx:=640/dx; my:=480/dy;
for i:=1 to 35 do begin
x[i]:=(x[i]-xmin)*mx;
y[i]:=getmaxy - (y[i]-ymin)*my; { <--- "Переворачиваем" изображение }
end;
for i:=1 to 35 do begin
a[i].x:=trunc(x[i]); a[i].y:=trunc(y[i]);
end;
a[36] := a[1]; { <--- Чтобы полигон был замкнутым }
drawpoly(36,a);
readln;
CloseGraph;
end.
Намного лучше,спасибо!
P.S. "замкнуть" полигон вообще забыла...(
Не понимаю... Изображение это я получила...(собака)... осталось "сделать" ей лапы...не получается... помогите пожалуйста и объясните если сможете...
вот что у меня получается...
одна лапа:
Procedure leg1;
const x:array [1..6] of real=(5.5,5.5,4.5,3.5,4.5,5);
y:array [1..6] of real=(-4.5,-5.5,-6.5,-6.5,-5.5,-2);
var xmin,xmax,ymin,ymax,dx,dy,mx,my:real;
begin
xmin:=3.5; xmax:=5.5;dx:=2;
ymin:=-6.5; ymax:=-2;dy:=4.5;
mx:=85/dx; my:=160/dy;
for i:=1 to 6 do begin
x[i]:=(x[i]-xmin)*mx;
y[i]:=getmaxy-(y[i]-ymin)*my;
end;
for i:=1 to 6 do begin
b[i].x:=trunc(x[i]);
b[i].y:=trunc(y[i]);
end;
b[7]:=b[1];
drawpoly(7,b);
end;
Procedure leg2;
const x:array[1..6] of real=(-2,-1.5,-2.5,-3.5,-2.5,-3);
y:array[1..6] of real=(-2,-5.5,-6.5,-6.5,-5.5,-3);
var xmin,xmax,ymin,ymax,dx,dy,mx,my:real;
begin
xmin:=-3.5; xmax:=-1.5;dx:=2;
ymin:=-6.5; ymax:=-2;dy:=4.5;
mx:=150/dx; my:=280/dy;
for i:=1 to 6 do begin
x[i]:=(x[i]-xmin)*mx;
y[i]:=getmaxy-(y[i]-ymin)*my;
end;
for i:=1 to 6 do begin
c[i].x:=trunc(x[i]);
c[i].y:=trunc(y[i]);
end;
c[7]:=c[1];
drawpoly(7,c);
end;
Обязательно надо разбивать отрисовку на подпрограммы? Никак нельзя отрисовать "не отрывая карандаша" от бумаги весь рисунок?
неа, а этом теперь и стоит проблема... именно отдельно идет собачка, отдельно одна нога,и отдельно другая нога...
А может нужно как-то эту процедуру (построения ног) "совместить" с координатной сеткой. я у вас спрашивала про нее уже... вот вы мне ответили...
x:=0;
while x<getmaxx do begin
line(x,0,x,getmaxy);
x:=x+20;
end;
y:=0;
while y<getmaxy do begin
line(0,y,getmaxy,y);
y:=y+20;
end;