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

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

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

 
 Ответить  Открыть новую тему 
> графика, линии
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

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


вывести N-ое количество линий, пересекающих прямоугольник.

помогите сделать так, что б линии начинали выводится не от средины экрана,а от начала =(((


 Program Line7;
Uses Graph,CRT;
label 1;
var
x0,y0,x00,y00,x1,y1,x2,y2,g,a,b,n,i:integer;
driver,regim,error:integer;

Begin
clrscr;
Detectgraph(driver,regim);
Initgraph(driver,regim,'G:\TP7\BGI');
Error:=GraphResult;
if Error <> grOK then
begin
writeln(GraphErrorMsg(Error));
Halt(Error)
end;
readln(n);
ClearDevice;
SetColor(LightGreen);
Rectangle(5,478,300,200);
SetColor(Red);
SetLineStyle(0,0,1);
x0:=0; y0:=480;
x00:=640; y00:=0;
Line(x0,y0,x00,y00);
g:=x00 div n;
for i:=1 to n do begin
Line(x0,y0,x00+g,y00+g);
g:=g+15;
end;

Readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


Не понял вопроса как это не от середины экрана, из начала?


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

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


введите 20 штук....нужно что б они выводились начиная от Line(0,480,0,0) до Line(0,480,640,480)

Сообщение отредактировано: Formula -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


x00:=640; попробуйте заменить на x00:=20;


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

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


2 линии выводит. остальные я так подозреваю уходят за линию(0,480,0,0)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

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


Вот моя версия делал подругому

program p1;
uses graph;
var r,i,x0,y0,x00,y00,driver,mode,n,z:integer;
l:real;
begin
readln(n);
driver:=detect;
initgraph(driver,mode,'c:\bgi');
rectangle(5,478,300,200);
x0:=0;
y0:=480;
x00:=20;
r:=100;
z:=0;
setcolor(red);
for i:=1 to n do begin
x00:=round(x00+i+(640/n));
If (r*r-(x00)>0) then y00:=-round(sqrt(r*r-x00))-480;
line(x0,y0,x00,y00);
end;
readln;
end.




--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

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


тоже вариант))) большое спасибо give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Еще лучше - не считать себя пророком, и не предполагать, что все видеокарты имеют только разрешение 640*480. Есть и другие разрешения, кстати. Может инициализироваться режим 640*350 - тогда половины картинки вообще не будет видно. Не просто так придумали функции GetMaxX и GetMaxY. Сначала получаем с их помощью максимальные значения X и Y соответственно, а потом уже используем эти значения в расчетах. Тогда неожиданностей будет меньше.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


Можно тупо жёстко устанавливать режим (Driver := VGA; Mode := VGAhi или mov ax, $0013; int $10), и всё делать под него (эти режимы нынче есть у всех). Я так делал. Но при переходе под винду мне это дало непрятности - я оказался не готов к способности окон менять размеры и к тому, что у всех разное разрешение экрана.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Знаток
****

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

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


В графике (геометрии) следует соблюдать пропорции. Их можно достичь, если использовать относительные величины, такие как GetMaxX, GetMaxY, не зависящие от устанавливаемого режима графики.

Так что нужно перевести все величины в зависимость от этих функций. Допустим, длина отрезка линии, равная 0.15*GetMaxX.
Возня же с абсолютными величинами неоправдана и ведёт ко множеству проблем с пропорциями при любых изменениях в программе.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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