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

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

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

 
 Ответить  Открыть новую тему 
> Графические файлы(bmp,jpeg и т.д), Изменение размеров изображения.
сообщение
Сообщение #1





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

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


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


-
****

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

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


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


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





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

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


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


Гость






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


Гость






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

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

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





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

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


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


Гость






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

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





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

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


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

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

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

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


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


Гость






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


Гость






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

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

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

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


Гость






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


Гость






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





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

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


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

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

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


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

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

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


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

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

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


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





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

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


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

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

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

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



Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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. А за оскорбление получаешь премод на неделю. Учись вести себя прилично. Пригодится...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Профи
****

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

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


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

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

 




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