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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Метод Гуро, Графика
mihashark
сообщение 11.05.2004 15:06
Сообщение #1


Гость






Люди,помогите закрасить пирамиду методом Гуро,а то я чё его не понимаю ни хрена!
 К началу страницы 
+ Ответить 
mihashark
сообщение 11.05.2004 15:18
Сообщение #2


Гость






Вот полная формулировка:закрасит усечённую пирамиду с правильным 6-тиугольником в основании,предусмотреть изменение ориентации пирамиды и двигать источник света!
Я сейчас дошёл до определения нормалей поверхностей!
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 11.05.2004 15:25
Сообщение #3


Гость






Кхе, кхе...
А про етот метод по-подробней можно?
 К началу страницы 
+ Ответить 
mihashark
сообщение 11.05.2004 19:10
Сообщение #4


Гость






Если бы я знал,я бы не спрашивал!короче его суть в том, что надо расчитать интенсивность освещения в вершинах(это я почти сделал),а потом построчно расчитывать интенсивность каждого пикселя!это в принципе я смогу сделать(хотя пока не получилось),там одна математика!но чё делать дальше:вот у меня получилась интенсивность в точке,например, 3,68 и как мне закрасит этот пиксель с такой интенсивностью???
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 11.05.2004 19:40
Сообщение #5


Гость






Установи режим на 24/32 бита, а затем используй что-нибудь типа
Код

Function Color(TvoyIntensivnost,MaxIntencivnost):TColor;
Var
 n:Integer;
Begin
 n:=Round(255*TvoyIntensivnost/MaxIntencivnost);
 Result:=RGB(n,n,n)
End;
 К началу страницы 
+ Ответить 
mihashark
сообщение 11.05.2004 22:15
Сообщение #6





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

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


Как установить 24/32 бита?
и что эта функция мне даст?она же не выводит на экран ничего?
и что такое maxintensivnost?
Объясни поподробней,пожалуйста!очень надо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 11.05.2004 23:35
Сообщение #7


Гость






Объясняю.
Есть и под BP такие BGI-драйвера, которые умеют 24/32 бита. А под TMT Pascal, так это вообще родное.
Далее, ты сказал, что сможешь высчитать интенсивность каждого пикселя. Очень хорошо. Есть такое понятие, как градации серого. Для отображения твоей пирамидки тебе, я думаю, этого хватит. А ф-ция, которую я привёл как набросок, вычисляет именно подходящую градацию серого по простой пропорции. А maxintensivnost обозначает максимальную интенсивность, которую может принимать какая-либо точка.
 К началу страницы 
+ Ответить 
Dark
сообщение 12.05.2004 5:25
Сообщение #8


Знаток
****

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

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


BlackShadow, А если не серого то тогда как : )


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dark
сообщение 12.05.2004 5:31
Сообщение #9


Знаток
****

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

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


mihashark, потом большая просьба скинуть программу.


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 12.05.2004 8:38
Сообщение #10


Гость






Dark smile.gif
Можно сделать очень даже симпатично: со временем менять палитру. Т. е., допустим, первые 2 минуты использовать градации красного, затем синего, зелёного, жёлтого, серого... Довольно эффектно смотрится.
 К началу страницы 
+ Ответить 
mihashark
сообщение 12.05.2004 14:10
Сообщение #11





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

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


Т.е. RGB вычисляет яркость цвета,это я понял!а чё потом делать?
Так можно быдет:
[/RGB[n,n,n]
putpixel(x,y)]
и он этот пиксель закрасит с нужной интенсивностью???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mihashark
сообщение 12.05.2004 14:18
Сообщение #12





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

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


И вообще чё за RGB?он пишет unknown identifier!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 12.05.2004 14:31
Сообщение #13


Гость






С чего бы это...
Ты, я так понял, под BP пишешь.
RGB там нету. И не интенсивность оно задаёт, а цвет формирует. Любой цвет состоит из трёх базовых: красного ( R ), зелёного ( G ) и синего ( B ). Если всего поровну, то получается, что-то серое, а вот яркость зависит от кол-во того другого и третьего.
Самому написать RGB очень легко:
Код

Function RGB(r,g,b:Byte):LongInt;Assembler;
Asm
 MOV AL,[r]
 MOV AH,[g]
 MOV DL,[b]
 XOR DH,DH
End;

либо

Function RGB(r,g,b:Byte):LonhInt;Assembler;
Asm
 MOV AL,[b]
 MOV AH,[g]
 MOV DL,[r]
 XOR DH,DH
End;

Какой из этих вариантов верен, я что-то никак сообразить не могу. Попробуй вывести пиксель очень красного цвета при помощи первого варианта. Если он будет очень синий, значит правильный второй smile.gif
А вообще PutPixel, если мне память не изменяет, требует 3 параметра: x, y и цвет. Угадай, откуда берётся третий *)

Сообщение отредактировано: BlackShadow - 12.05.2004 14:34
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 12.05.2004 14:36
Сообщение #14


Гость






Прикольно, а я и не знал, что ( R ) без пробелов заменяется на ®
 К началу страницы 
+ Ответить 
mihashark
сообщение 12.05.2004 14:41
Сообщение #15





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

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


Оба варианта при параметрах 100,100,100 выводят красный цвет!
если парамеры одинаковые (5,5,5) и (10,10,10) он должен вывести один и тот же цвет,но с разной интенсивностью?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mihashark
сообщение 12.05.2004 14:56
Сообщение #16





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

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


Слушай,BlackShadow,вруби аську так проще будет!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 12.05.2004 15:09
Сообщение #17


Гость






В теории да. А вот аську врубить не могу по загадочным причинам - она конектиться не хочет. Я ближе к ночи до дому доберусь, тогда можно будет и поговорить... Только я в Invisible всегда, так что пиши не стесняйся - подрублюсь, сразу отвечу.
 К началу страницы 
+ Ответить 
mihashark
сообщение 12.05.2004 22:32
Сообщение #18





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

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


BlackShadow,тот модуль что я скачал с http://pascal.sources.ru/graph/fastvesa.htm,я чето не могу инициализировать графический режим,не подскажешь как это сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 13.05.2004 0:28
Сообщение #19


Гость






Надо вызвать StVESAMode с параметором
$100 - 640*400
$101 - 640*480
$103 - 800*600
$105 - 1024*768
$107 - 1280*1024
А, если держится VBE 2.0, то и $120 - 1600*1200
Только проверяй, тянется ли этот режим.
 К началу страницы 
+ Ответить 
Dark
сообщение 13.05.2004 6:09
Сообщение #20


Знаток
****

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

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


погляди в задачах - вывод pcx, там изложена моя библиотечка...


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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