Графические файлы(bmp,jpeg и т.д), Изменение размеров изображения. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Графические файлы(bmp,jpeg и т.д), Изменение размеров изображения. |
Pentagon |
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
Люди! Помогите пожалуйста мне написать программу на паскале по изменению размеров изображения из файла (программа должна считывать графический файл, выводитть его на экран и изменять его размеры, как бы растягивать). Но не все так просто... Нужно сделать так, чтобы получился эффект вытягивания какого-нибудь угла изображение( или, если сказать проще, нужно "посадить" нашу картинку в произвольный четырехугольник). Я уже сделал программу с таким эффектом. Но я использовал не графический файл, а произвольный рисунок нарисованный с помощью стандартных процедур Graph-а. Да и программа работает очень медленно даже на моём Athlon-не. Не удивительно, ведь я создавал плоскость, состоящую из нескольких тысяч маленьких плоскостей(что-то типа пикселей картинки), заполнял их соответствующим цветом графического файла, и тянул их как хотел... Вообщем получается то что надо, но тормозит! Если у кого-нибудь есть кое-какие идеи отзовитесь! Буду очень рад и признателен! Заранее спасибо.
|
FreeMan |
Сообщение
#2
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
юзай опенгл. рисуешь свой четырехугольник и натягиваешь изображение как текстурку
-------------------- бб
|
Pentagon |
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
Не, надо обязательно без Opengl или Direct3d, забыл сообщить... Важен сам принцип наложения текстуры. Все-таки научная работа....
|
Гость |
Сообщение
#4
|
Гость |
Ускорить производительность программы можно почти в 10 раз перейдя на целочисленную арифметику. Т.е. вместо real использовать integer. Если нужна какая-то точность, то считай две поледних цифры от integer как идущие после запятой (реальное значение выдавать как integer div 100). Всякие функции типа синуса и т.д. просчитать заранее и запомнить в массиве (например mass_sin[integer]=100*sin(integer/100) ).
Советую изображение брать в формате BMP, этот формат хорошо описан и можно поискать готовую библиотеку по его чтению-записи. Удачи! |
volvo |
Сообщение
#5
|
Гость |
Цитата(Pentagon @ 7.08.2006 11:06) Я уже сделал программу с таким эффектом. <...> Да и программа работает очень медленно даже на моём Athlon-не. <...> Вообщем получается то что надо, но тормозит! Ну, если у тебя уже получилось то, что надо - может быть ты покажешь, КАК ты это делал? А вдруг можно будет ускорить программу (может быть и не только в 10 раз, а на порядки) Не хочется просто второй раз заниматься изобретением того же самого велосипеда... (программу присоединяй к сообщению в виде файла, а не вставляй сюда ее текст) |
Pentagon |
Сообщение
#6
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
Для тех кто не верит, вот exe-шник, только я место закрашеных четырехугольников использовал точки, быстрее пашет. Управление: обзор с помощью мыши (старался сделать как в Half-Life ), вепед W, назад S, вправо D, влево A. Щас уберу ненужные комментарии и исходник дам. Если сказать честно я пишу научную работу по Трехмерной графике, именно тут мне и надо накладывать текстуры. По-моему получилось здорово! И идея неплохая. (Программа без OpenGl и Direct3D).
|
volvo |
Сообщение
#7
|
Гость |
Цитата(Pentagon @ 18.08.2006 9:46) Для тех кто не верит, вот exe-шник Дело не в "верит" - "не верит"... Здесь - не форум любителей гадания на ромашках. Никто не сомневается, что твоя программа работает, НО... Ты что думаешь, чтобы разобраться КАК она работает (и, возможно, ускорить ее) кто-то будет ее дизассемблировать? По-моему, ты ошибаешься, тебе так не кажется?Если нужна помощь - приводи исходник. EXE будет удален (читай правила форума, пункт 10...) |
Pentagon |
Сообщение
#8
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
Блин, я думал можно exe-ники посылать... Ладно, вот (если кто-че поймет) исходник. Для тех кто еще не понял программа на TMTPascal.
Помощь принимается и в алгоритмах. Не обязательно писать саму программу. В программе все очень напутано... Я просто забросил эту тему, потому что думал что никто не ответит, занялся другим делом, из-за этого и не довёл плод моего умственного труда до нормального состояния. Сообщение отредактировано: Pentagon - Прикрепленные файлы Paskal3D.pas ( 6.49 килобайт ) Кол-во скачиваний: 315 |
volvo |
Сообщение
#9
|
Гость |
Молодец... Значит, Mouse.pas и Engine.pas мы по телепатическому каналу принимаем? Извини, сегодня этот канал закрыт, а наши штатные телепаты - в отпуске.
|
Гость |
Сообщение
#10
|
Гость |
Молодец... Значит, Mouse.pas и Engine.pas мы по телепатическому каналу принимаем? Извини, сегодня этот канал закрыт, а наши штатные телепаты - в отпуске. Слушай мне не нужны тексты программ, мне не нужна помощь в улучшении моего алгоритма, мне нужен НОВЫЙ алгоритм в ТЕКСТОВОМ виде, и я спросил: у кого есть какие идеи....... И я считаю что тем людям, которые это читают не нужен текст моей проги... |
Гость |
Сообщение
#11
|
Гость |
Это я Pentagon, только с гостя зашел....
|
volvo |
Сообщение
#12
|
Гость |
Единственную возможную "идею" ты получил в первом же ответе. Все остальное называется "Повторное изобретение велосипеда". Тебе охота этим заниматься? You Are Welcome...
|
Pentagon |
Сообщение
#13
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
|
Altair |
Сообщение
#14
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Pentagon, хватит цирка, или ты показываешь исходники (не беспокойся о своем авторском праве, здесь твои исходники никому нафиг не нужны) или не занимаешься пустотрепством!
Цитата Я не прошу её опять изобретать. не просишь изобретать, тогда дай его целиком а не без колес... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Pentagon |
Сообщение
#15
|
|||
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Диман Репутация: 0 |
<censored>: "мне не нужны тексты программ, мне НЕ НУЖНА помощь в улучшении моего алгоритма, мне нужен НОВЫЙ алгоритм в ТЕКСТОВОМ виде".
Максимум что я могу предложить это скомпилированнные файлы. Исходники я не дам (боюсь ). Мне кажется того файла, который я дал, вполне достаточно. Mouse.pas и Engine.pas вам знать не обязательно. Это вообще не относится к моей просьбе.
Сообщение отредактировано: volvo - |
|||
volvo |
Сообщение
#16
|
Гость |
Ну, тогда и тот ответ, который ты мог бы получить тебе тоже знать не обязательно... Вполне достаточно того, что предложил FreeMan...
[OffTop]Интересно получается... Человек пришел, жалуясь на то, что у него программа медленно работает... Предложили одно - нет, это нельзя, другие идеи давайте. "Покажи, как ты делаешь" - дает совершенно не то, что нужно, сам движок (который надо оптимизировать в первую очередь, кстати) остается тайной... Внимание, вопрос: Зачем спрашивал?[/OffTop] А теперь вопрос к автору топика на засыпку... У меня есть 2 программы: 1) uses unit1; 2) uses unit2; Так вот, что я хотел спросить у тебя... Почему первая отрабатывает за полсекунды, а вторая - за минуту? Забыл совсем, содержимое Unit1/Unit2 тебе знать СОВЕРШЕННО необязательно, как ты, вероятно, догадался... Так как насчет ответа? P.S. А за оскорбление получаешь премод на неделю. Учись вести себя прилично. Пригодится... |
Malice |
Сообщение
#17
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Тебе нужно обычное текстурирование. Только обычно для этого оперируют не 4-мя точками, а 3-мя, .т.е. натягивают текстуру на треугольник. В твоем случае можно разбить на 2 треугольника и все. Вот первая ссылка из гугля для этого http://www.enlight.ru:8002/faq3d/articles/42.htm
Если хочется все таки на 4, могу поискать дома, изобретал я этот велосипед лет 10 назад, возможно сохранилось. Но треугольниками быстрее будет. |
Текстовая версия | 13.10.2024 20:16 |