IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> соединение точек с помощью DrawPoly
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Подскажите пожалуйста.
У меня даны координаты точек. Эти точки нужно последовательно соединить с помощью DrawPoly. координат много (приведу в пример несколько):
(7,0), (7,-1), (6.5,-2.5) и т.д.
Эти координаты нужно как-то переводить в пиксели?Я правильно понимаю?Если да,то как это сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Эти координаты нужно как-то переводить в пиксели?
Естественно... DrawPoly работает с массивом TPoint-ов, представляющих собой координаты точек в пикселях...

Цитата
как это сделать?
Ну, для начала - пробежать по всему массиву, найти мин/макс значение для X и для Y, чтобы масштабировать изображение... Допустим, твой вариант:
Цитата
(7,0), (7,-1), (6.5,-2.5)

Xmin = 6.5; Xmax = 7; то есть, DX(разброс значений X) = 0.5

Ymin = -2.5; Ymax = 0; DY = 2.5

Теперь решаешь, на каком участке экрана ты хочешь видеть свой полигон... Допустим, на полный экран... Тогда
mx = 640 / DX;
my = 480 / DY;
теперь еще раз идем по массиву и КАЖДОЕ значение X меняем на
((X - Xmin)*mx), и каждое значение Y - на ((Y - Ymin)*my)

Все, теперь можно отчерчивать полигон с помощью DrawPoly...

По-моему, ничего не перепутал. unsure.gif

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


спасибо, я попробую. О результате отчитаюсь:)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


у меня не получается...чего-то не понимаю наверное... посмотрите что не так,пожалуйста. Изображение "вверх-ногами" выводится:(
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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Так лучше?
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.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Намного лучше,спасибо!
P.S. "замкнуть" полигон вообще забыла...(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Не понимаю... Изображение это я получила...(собака)... осталось "сделать" ей лапы...не получается... помогите пожалуйста и объясните если сможете...
вот что у меня получается...
одна лапа:
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;

на второй ноге вообще не получается...ноги находятся в начале экрана...а мне надо прикрепить их к изображению собаки с помощью DrawPoly...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Обязательно надо разбивать отрисовку на подпрограммы? Никак нельзя отрисовать "не отрывая карандаша" от бумаги весь рисунок?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


неа, а этом теперь и стоит проблема... именно отдельно идет собачка, отдельно одна нога,и отдельно другая нога...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 132
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


А может нужно как-то эту процедуру (построения ног) "совместить" с координатной сеткой. я у вас спрашивала про нее уже... вот вы мне ответили...
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;


P.S. Помогите плиз с этим рисунком... завтра сдавать уже:( не могу придумать как эти ноги "прицепить" собаке с помощью DrawPoly! sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 21.09.2020 20:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name