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

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

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

> Графические файлы(bmp,jpeg и т.д), Изменение размеров изображения.
Pentagon
сообщение 7.08.2006 11:06
Сообщение #1





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

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


Люди! Помогите пожалуйста мне написать программу на паскале по изменению размеров изображения из файла (программа должна считывать графический файл, выводитть его на экран и изменять его размеры, как бы растягивать). Но не все так просто... Нужно сделать так, чтобы получился эффект вытягивания какого-нибудь угла изображение( или, если сказать проще, нужно "посадить" нашу картинку в произвольный четырехугольник). smile.gif Я уже сделал программу с таким эффектом. Но я использовал не графический файл, а произвольный рисунок нарисованный с помощью стандартных процедур Graph-а. Да и программа работает очень медленно даже на моём Athlon-не. Не удивительно, ведь я создавал плоскость, состоящую из нескольких тысяч маленьких плоскостей(что-то типа пикселей картинки), заполнял их соответствующим цветом графического файла, и тянул их как хотел... Вообщем получается то что надо, но тормозит! Если у кого-нибудь есть кое-какие идеи отзовитесь! Буду очень рад и признателен! smile.gif Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 16)
FreeMan
сообщение 7.08.2006 11:24
Сообщение #2


-
****

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

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


юзай опенгл. рисуешь свой четырехугольник и натягиваешь изображение как текстурку


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Pentagon
сообщение 7.08.2006 16:32
Сообщение #3





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

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


Не, надо обязательно без Opengl или Direct3d, забыл сообщить... Важен сам принцип наложения текстуры. Все-таки научная работа....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 8.08.2006 8:06
Сообщение #4


Гость






Ускорить производительность программы можно почти в 10 раз перейдя на целочисленную арифметику. Т.е. вместо real использовать integer. Если нужна какая-то точность, то считай две поледних цифры от integer как идущие после запятой (реальное значение выдавать как integer div 100). Всякие функции типа синуса и т.д. просчитать заранее и запомнить в массиве (например mass_sin[integer]=100*sin(integer/100) ).
Советую изображение брать в формате BMP, этот формат хорошо описан и можно поискать готовую библиотеку по его чтению-записи.
Удачи! smile.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 11.08.2006 16:37
Сообщение #5


Гость






Цитата(Pentagon @ 7.08.2006 11:06)
Я уже сделал программу с таким эффектом. <...> Да и программа работает очень медленно даже на моём Athlon-не. <...> Вообщем получается то что надо, но тормозит!

Ну, если у тебя уже получилось то, что надо - может быть ты покажешь, КАК ты это делал? А вдруг можно будет ускорить программу (может быть и не только в 10 раз, а на порядки) cool.gif Не хочется просто второй раз заниматься изобретением того же самого велосипеда...

(программу присоединяй к сообщению в виде файла, а не вставляй сюда ее текст)
 К началу страницы 
+ Ответить 
Pentagon
сообщение 18.08.2006 9:46
Сообщение #6





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

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


Для тех кто не верит, вот exe-шник, только я место закрашеных четырехугольников использовал точки, быстрее пашет. Управление: обзор с помощью мыши (старался сделать как в Half-Life smile.gif ), вепед W, назад S, вправо D, влево A. Щас уберу ненужные комментарии и исходник дам. Если сказать честно я пишу научную работу по Трехмерной графике, именно тут мне и надо накладывать текстуры. По-моему получилось здорово! И идея неплохая. (Программа без OpenGl и Direct3D).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.08.2006 10:18
Сообщение #7


Гость






Цитата(Pentagon @ 18.08.2006 9:46)
Для тех кто не верит, вот exe-шник
Дело не в "верит" - "не верит"... Здесь - не форум любителей гадания на ромашках. Никто не сомневается, что твоя программа работает, НО... Ты что думаешь, чтобы разобраться КАК она работает (и, возможно, ускорить ее) кто-то будет ее дизассемблировать? По-моему, ты ошибаешься, тебе так не кажется?

Если нужна помощь - приводи исходник. EXE будет удален (читай правила форума, пункт 10...)
 К началу страницы 
+ Ответить 
Pentagon
сообщение 18.08.2006 10:31
Сообщение #8





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

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


Блин, я думал можно exe-ники посылать... Ладно, вот (если кто-че поймет) исходник. Для тех кто еще не понял программа на TMTPascal.

Помощь принимается и в алгоритмах. Не обязательно писать саму программу.

В программе все очень напутано... Я просто забросил эту тему, потому что думал что никто не ответит, занялся другим делом, из-за этого и не довёл плод моего умственного труда до нормального состояния.

Сообщение отредактировано: Pentagon - 18.08.2006 14:28


Прикрепленные файлы
Прикрепленный файл  Paskal3D.pas ( 6.49 килобайт ) Кол-во скачиваний: 227
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.08.2006 12:41
Сообщение #9


Гость






Молодец... Значит, Mouse.pas и Engine.pas мы по телепатическому каналу принимаем? Извини, сегодня этот канал закрыт, а наши штатные телепаты - в отпуске.
 К началу страницы 
+ Ответить 
Гость
сообщение 12.09.2006 13:32
Сообщение #10


Гость






Цитата(volvo @ 19.08.2006 12:41) *

Молодец... Значит, Mouse.pas и Engine.pas мы по телепатическому каналу принимаем? Извини, сегодня этот канал закрыт, а наши штатные телепаты - в отпуске.

Слушай мне не нужны тексты программ, мне не нужна помощь в улучшении моего алгоритма, мне нужен НОВЫЙ алгоритм в ТЕКСТОВОМ виде, и я спросил: у кого есть какие идеи....... И я считаю что тем людям, которые это читают не нужен текст моей проги...

 К началу страницы 
+ Ответить 
Гость
сообщение 12.09.2006 13:33
Сообщение #11


Гость






Это я Pentagon, только с гостя зашел....
 К началу страницы 
+ Ответить 
volvo
сообщение 12.09.2006 13:51
Сообщение #12


Гость






Единственную возможную "идею" ты получил в первом же ответе. Все остальное называется "Повторное изобретение велосипеда". Тебе охота этим заниматься? You Are Welcome...
 К началу страницы 
+ Ответить 
Pentagon
сообщение 13.09.2006 14:47
Сообщение #13





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

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


Цитата(volvo @ 12.09.2006 13:51) *

Все остальное называется "Повторное изобретение велосипеда".

По-моему я рассказал свою идею в первом сообщении. Я не прошу её опять изобретать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 14.09.2006 8:11
Сообщение #14


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Pentagon, хватит цирка, или ты показываешь исходники (не беспокойся о своем авторском праве, здесь твои исходники никому нафиг не нужны) или не занимаешься пустотрепством!

Цитата
Я не прошу её опять изобретать.

не просишь изобретать, тогда дай его целиком а не без колес...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Pentagon
сообщение 14.09.2006 14:41
Сообщение #15





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

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


<censored>: "мне не нужны тексты программ, мне НЕ НУЖНА помощь в улучшении моего алгоритма, мне нужен НОВЫЙ алгоритм в ТЕКСТОВОМ виде".

Максимум что я могу предложить это скомпилированнные файлы. Исходники я не дам (боюсь smile.gif ).

Мне кажется того файла, который я дал, вполне достаточно. Mouse.pas и Engine.pas вам знать не обязательно. Это вообще не относится к моей просьбе.

М
Можешь скомпилированные файлы не давать... Внимательно читай здесь: Правила (пункт 10)



Сообщение отредактировано: volvo - 14.09.2006 15:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.09.2006 15:32
Сообщение #16


Гость






Ну, тогда и тот ответ, который ты мог бы получить тебе тоже знать не обязательно... Вполне достаточно того, что предложил FreeMan...

[OffTop]Интересно получается... Человек пришел, жалуясь на то, что у него программа медленно работает... Предложили одно - нет, это нельзя, другие идеи давайте. "Покажи, как ты делаешь" - дает совершенно не то, что нужно, сам движок (который надо оптимизировать в первую очередь, кстати) остается тайной... Внимание, вопрос: Зачем спрашивал?[/OffTop]

А теперь вопрос к автору топика на засыпку...

У меня есть 2 программы:
1)
uses unit1;
Var a: array[1 .. 20000] of integer;
begin
InitArray(A);
PrintArray(A);
end.

2)
uses unit2;
Var a: array[1 .. 20000] of integer;
begin
InitArray(A);
PrintArray(A);
end.

Так вот, что я хотел спросить у тебя... Почему первая отрабатывает за полсекунды, а вторая - за минуту?
Забыл совсем, содержимое Unit1/Unit2 тебе знать СОВЕРШЕННО необязательно, как ты, вероятно, догадался...

Так как насчет ответа? unsure.gif

P.S. А за оскорбление получаешь премод на неделю. Учись вести себя прилично. Пригодится...
 К началу страницы 
+ Ответить 
Malice
сообщение 14.09.2006 16:32
Сообщение #17


Профи
****

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

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


Тебе нужно обычное текстурирование. Только обычно для этого оперируют не 4-мя точками, а 3-мя, .т.е. натягивают текстуру на треугольник. В твоем случае можно разбить на 2 треугольника и все. Вот первая ссылка из гугля для этого http://www.enlight.ru:8002/faq3d/articles/42.htm
Если хочется все таки на 4, могу поискать дома, изобретал я этот велосипед лет 10 назад, возможно сохранилось. Но треугольниками быстрее будет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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