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

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

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

> графика, линии
Formula
сообщение 13.04.2010 20:44
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
Freedom
сообщение 13.04.2010 21:36
Сообщение #2


Пионер
**

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

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


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


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


Новичок
*

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

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


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

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


Пионер
**

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

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


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


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


Новичок
*

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

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


2 линии выводит. остальные я так подозреваю уходят за линию(0,480,0,0)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Freedom
сообщение 13.04.2010 22:30
Сообщение #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 
 К началу страницы 
+ Ответить 
Formula
сообщение 13.04.2010 22:39
Сообщение #7


Новичок
*

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

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


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


Гость






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


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

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

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


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


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


Знаток
****

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

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


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

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


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

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

 



- Текстовая версия 20.07.2025 12:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"