Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992

Где найти код Transformation->Distort?

13.10.2016, 11:50. Показов 2709. Ответов 48

Здравствуйте. Где найти код искажения текстуры, как будто он на поверхности коробки, т.е. в пространстве? Также эта операция аналогична операции Edit->Transform->Distort и трансформация как показано на рисунке. Выкладывайте, пожалуйста, код, если если он есть у кого-нибудь.
Миниатюры
Где найти код Transformation->Distort?   Где найти код Transformation->Distort?   Где найти код Transformation->Distort?  

Где найти код Transformation->Distort?   Где найти код Transformation->Distort?  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2016, 11:50
Ответы с готовыми решениями:

Где в проекте найти сам код на c#?
Скачал программу, но не знаю где найти сам код на c#? То есть где автор прописывал что делать при нажатии на ту или иную кнопку? Вот...

Где найти код самой функции?
новичок в jquery когда встречается такой код <div class="btn_buy_step_2" onclick="oneClick(this);" />Перейти к оплате</div>где...

Не могу найти где править код
Добрый день всем! Столкнулся с проблемой, сайт на вордпрес 4.7.2 нужно сменить номер телефона, а он как-то хитро прописан. Понимаю что...

48
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 12:33
Цитата Сообщение от DemolitionMan Посмотреть сообщение
- почему?
Цитата Сообщение от Croessmah Посмотреть сообщение
еще что-то?
И не только по этому.
Там не совсем те преобразования которые вам нужны.
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
14.10.2016, 12:34  [ТС]
Когда я писал здесь программы с меня модераторы требовали объяснения этих программ. Здесь будут объяснения этой программы?

Добавлено через 32 секунды
Цитата Сообщение от castaway Посмотреть сообщение
И не только по этому.
Там не совсем те преобразования которые вам нужны.
- главное результат.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 12:42
Хотя... возможно и подойдёт.
DemolitionMan, вам не нужна вся программа. Изучите содержимое одного файла trans_perspective.h.

Добавлено через 3 минуты
Цитата Сообщение от DemolitionMan Посмотреть сообщение
Когда я писал здесь программы с меня модераторы требовали объяснения этих программ. Здесь будут объяснения этой программы?
Не знаю кто и что с вас требовал, я описывать её принцип не собираюсь.
Изучайте файл на который я указал. Там всё просто в плане использования.
0
14.10.2016, 12:59

Не по теме:

Цитата Сообщение от DemolitionMan Посмотреть сообщение
Когда я писал здесь программы с меня модераторы требовали объяснения этих программ.
Это когда такое было? Ссылочку можно?

0
14.10.2016, 15:31

Не по теме:

Цитата Сообщение от castaway Посмотреть сообщение
BOGG ART, DemolitionMan, код требует поддержку стандарта 2011-го года. Вы что-нибудь слышали про стандарт 2011-го года? Лет ~ 5 назад ввели.
Вы об чём? Какой конкретно код тут 2011 года?
Я стандарты не отличаю на глаз, но как минимум та библиотека которую решили использовать была написана с 2002 по 2006.

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 16:09
BOGG ART, у меня перед глазами кода нет. Вы про какую библиотеку?
0
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
14.10.2016, 16:52
Цитата Сообщение от castaway Посмотреть сообщение
код требует поддержку стандарта 2011-го года.
Это вы про какой код утверждали, если
Цитата Сообщение от castaway Посмотреть сообщение
у меня перед глазами кода нет.
?

Добавлено через 26 минут
По теме: та ошибка лезла из-за "namespace", я в некоторой растерянности. Но без него они рассосались.
Дальше я поисправил что мог...
Особенно насмешило:
C++
1
2
3
4
5
6
7
8
class test {
    const double radius = 5;
    const double hit    = 5;
public:
    test() {
        // ...
    }
};
[C++ Error] E2233 Cannot initialize a class member here
[C++ Error] E2233 Cannot initialize a class member here
[C++ Warning] W8038 Constant member 'test::radius' is not initialized
[C++ Warning] W8038 Constant member 'test::hit' is not initialized
Што? Блин, думаю, ну ок, перенесу инициализацию в конструктор:
C++
1
2
3
4
5
6
7
8
9
class test {
    const double radius;
    const double hit;
public:
    test() {
        radius = 5;
        hit    = 5;
    }
};
Закономерно получаю:
[C++ Warning] W8038 Constant member 'test::radius' is not initialized
[C++ Warning] W8038 Constant member 'test::hit' is not initialized
[C++ Error] E2024 Cannot modify a const object
[C++ Error] E2024 Cannot modify a const object
Што? А, ну да, константы же там... Не заметил.
эм... Стоп. А где их тогда инициализировать надо было, если не при объявлении?

Застрял тут:
C++
1
2
3
4
//   m_outline.tags   --->   char * tags;
//   m_tags   --->   std::vector<char> m_tags;
...
m_outline.tags = m_tags.data();
[C++ Error] E2316 'data' is not a member of '_STL::vector<char,_STL::allocator<char> >'
и тут:
C++
1
2
3
std::vector<point> m_points;
...
m_points.emplace_back(... , ...);
[C++ Error] E2316 'emplace_back' is not a member of '_STL::vector<point,_STL::allocator<poin t> >'
Кто-то что-нить подскажет?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 16:57
BOGG ART, когда я утверждал, код перед глазами был. Я должен был весь его запомнить?
Кстати, член-функция data класса vector появилась в 11-м стандарте. Могу ещё ткнуть носом когда буду дома.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
14.10.2016, 17:11
Цитата Сообщение от BOGG ART Посмотреть сообщение
Кто-то что-нить подскажет?
Подскажу еще раз:
Цитата Сообщение от castaway Посмотреть сообщение
код требует поддержку стандарта 2011-го года.
emplace_back появился в C++11.

можете поменять на push_back, примерно так:
C++
1
m_points.push_back(point(..., ...));
1
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
14.10.2016, 17:42
Спасибо, уже нашёл:Видимо человек из той темы что ли правил исходники библиотеки... а зачем...

Добавлено через 38 секунд
После замены emplace_back() на push_back() теперь ругается только на data(). Чем бы его заменить?

Добавлено через 6 минут
Погуглил немного, заменил практически наугад на begin(). Компилится, вроде работает.

Добавлено через 1 минуту
Всё же любопытно чем же ему "namespace ft2" не угодил...

Добавлено через 2 минуты
Я просто знал что библиотека написана до 2004. Там не могло было быть C++11. Оказывается это в той теме в код воткнули два метода из нового стандарта в 4 места.

Добавлено через 6 минут
Допилю завтра чтоб было удобнее работать из Билдера и тогда выложу.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 17:44
BOGG ART, про какую библиотеку вы всё время говорите?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
14.10.2016, 17:45
BOGG ART, библиотеки имеют свойства обновляться.
Я, например, в своем текущем проекте
C++17 использую по мере возможности.
1
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
14.10.2016, 18:59  [ТС]
Я только что прочитал файл trans_perspective.h и если честно ничего не понял. Кто-нибудь что-нибудь объяснит? Уважаемый castaway, объясните, пожалуйста, что тут что означает. Я так понимаю мне нужно взять TBitmap(например Bitmap1) и получить на выходе Bitmap2. Это как примерно можно сделать? Скажите, пожалуйста.
Посмотрите сами. Модераторы, вы кончено можете удалить такой длинный кусок кода, но лучше бы оставить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//------------------------------------------------------------------------------
// based on AGG library by Maxim Shemanarev
//------------------------------------------------------------------------------
 
#ifndef __TRANS_PERSPECTIVE_H__
#define __TRANS_PERSPECTIVE_H__
 
class trans_perspective {
    bool rect_to_quad( const point & p1, const point & p2, const point * quad ) {
        point r[4];
        r[0].x = r[3].x = p1.x;
        r[1].x = r[2].x = p2.x;
        r[0].y = r[1].y = p1.y;
        r[2].y = r[3].y = p2.y;
        return quad_to_quad( r, quad );
    }
 
    bool quad_to_quad( const point * qs, const point * qd ) {
        if ( !quad_to_square( qs ) ) return false;
        trans_perspective p;
        if ( !p.square_to_quad( qd ) ) return false;
        multiply( p );
        return true;
    }
 
    bool quad_to_square( const point * q ) {
        if ( !square_to_quad( q ) ) return false;
        invert();
        return true;
    }
 
    bool square_to_quad( const point * q ) {
        double dx = q[0].x - q[1].x + q[2].x - q[3].x;
        double dy = q[0].y - q[1].y + q[2].y - q[3].y;
        if ( dx == 0.0 && dy == 0.0 ) {
            // Affine case (parallelogram)
            //---------------
            sx  = q[1].x - q[0].x;
            shy = q[1].y - q[0].y;
            w0  = 0;
            shx = q[2].x - q[1].x;
            sy  = q[2].y - q[1].y;
            w1  = 0;
            tx  = q[0].x;
            ty  = q[0].y;
            w2  = 1;
        } else {
            double dx1 = q[1].x - q[2].x;
            double dy1 = q[1].y - q[2].y;
            double dx2 = q[3].x - q[2].x;
            double dy2 = q[3].y - q[2].y;
            double den = dx1 * dy2 - dx2 * dy1;
            if ( den == 0.0 ) {
                // Singular case
                //---------------
                sx = shy = w0 = shx = sy = w1 = tx = ty = w2 = 0;
                return false;
            }
 
            // General case
            //---------------
            double u = (dx * dy2 - dy * dx2) / den;
            double v = (dy * dx1 - dx * dy1) / den;
            sx  = q[1].x - q[0].x + u * q[1].x;
            shy = q[1].y - q[0].y + u * q[1].y;
            w0  = u;
            shx = q[3].x - q[0].x + v * q[3].x;
            sy  = q[3].y - q[0].y + v * q[3].y;
            w1  = v;
            tx  = q[0].x;
            ty  = q[0].y;
            w2  = 1;
        }
        return true;
    }
 
    const trans_perspective & multiply( const trans_perspective & a ) {
        trans_perspective b = *this;
        sx  = a.sx *b.sx  + a.shx*b.shy + a.tx*b.w0;
        shx = a.sx *b.shx + a.shx*b.sy  + a.tx*b.w1;
        tx  = a.sx *b.tx  + a.shx*b.ty  + a.tx*b.w2;
        shy = a.shy*b.sx  + a.sy *b.shy + a.ty*b.w0;
        sy  = a.shy*b.shx + a.sy *b.sy  + a.ty*b.w1;
        ty  = a.shy*b.tx  + a.sy *b.ty  + a.ty*b.w2;
        w0  = a.w0 *b.sx  + a.w1 *b.shy + a.w2*b.w0;
        w1  = a.w0 *b.shx + a.w1 *b.sy  + a.w2*b.w1;
        w2  = a.w0 *b.tx  + a.w1 *b.ty  + a.w2*b.w2;
        return *this;
    }
 
    // Invert matrix. Returns false in degenerate case
    bool invert() {
        double d0 = sy  * w2 - w1  * ty;
        double d1 = w0  * ty - shy * w2;
        double d2 = shy * w1 - w0  * sy;
        double d  = sx  * d0 + shx * d1 + tx * d2;
        if ( d == 0.0 ) {
            sx = shy = w0 = shx = sy = w1 = tx = ty = w2 = 0.0;
            return false;
        }
        d = 1.0 / d;
        trans_perspective a = *this;
        sx  = d * d0;
        shy = d * d1;
        w0  = d * d2;
        shx = d * (a.w1 *a.tx  - a.shx*a.w2);
        sy  = d * (a.sx *a.w2  - a.w0 *a.tx);
        w1  = d * (a.w0 *a.shx - a.sx *a.w1);
        tx  = d * (a.shx*a.ty  - a.sy *a.tx);
        ty  = d * (a.shy*a.tx  - a.sx *a.ty);
        w2  = d * (a.sx *a.sy  - a.shy*a.shx);
        return true;
    }
 
    double sx, shy, w0, shx, sy, w1, tx, ty, w2;
 
public:
    trans_perspective() :
        sx ( 1 ), shy( 0 ), w0( 0 ),
        shx( 0 ), sy ( 1 ), w1( 0 ),
        tx ( 0 ), ty ( 0 ), w2( 1 ) {}
 
    trans_perspective( const point & p1, const point & p2, const point * quad ) {
        rect_to_quad( p1, p2, quad );
    }
 
    bool is_valid( double epsilon = 1e-14 ) const {
        return fabs( sx ) > epsilon && fabs( sy ) > epsilon && fabs( w2 ) > epsilon;
    }
 
    void transform( point * pt ) const {
        point p = *pt;
        double m = 1. / (p.x * w0 + p.y * w1 + w2);
        pt->x = m * (p.x * sx  + p.y * shx + tx);
        pt->y = m * (p.x * shy + p.y * sy  + ty);
    }
};
 
#endif // __TRANS_PERSPECTIVE_H__
0
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
14.10.2016, 19:30
Операции с матрицами отображений.
Цитата Сообщение от DemolitionMan Посмотреть сообщение
мне нужно взять TBitmap(например Bitmap1) и получить на выходе Bitmap2
В том-то и дело что нет. Там независимая система.
Про это и говорю - под "C++Builder.VCL" надо ещё допиливать и допиливать.
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
14.10.2016, 19:52  [ТС]
Мм, понятно, ну я вообще не понимаю этот код. Обнаружился еще 1 файл с описанием - ftimage.h - описание всяких переменных, структур и т.д. и т.п. Может кто-нибудь более понятный код предложит?
0
 Аватар для BOGG ART
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
14.10.2016, 20:39
Массивы байт, циклы, математические операции над матрицами, вектора, указатели.
Он готовый. Его и не надо понимать. Надо лишь прикрутить его к VCL, прослойку дописать.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.10.2016, 22:34
DemolitionMan, вы хотите слишком многого не зная практически ничего. Вы хотя бы можете нарисовать четырёхугольник как на вашем 4-м изображении только без текстуры? Мне просто интересно, как вы его рисовать собираетесь?
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
15.10.2016, 07:17  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
DemolitionMan, вы хотите слишком многого не зная практически ничего.
- ну что-то Вы меня совсем за тупняка держите, я - программист, посмотрите какие я программы писал и определите мой уровень знаний.

Добавлено через 56 секунд
Линиями могу нарисовать.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
15.10.2016, 09:15
DemolitionMan, а текстуру вы на линии накладывать будете?
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
15.10.2016, 10:22  [ТС]
Не понял вопроса. Как накладывать? Через Вашу программу? Или просто так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2016, 10:22

где найти код элемента стилей?
Здравствуйте.. Я не програмист.. Но любитель! Кусочки кода где нибуть повырезать и сделать что нибудь свое творческое)) С...

Где найти php-код создания пользователей
Всем доброе утро! Проблема следующая... На сайте http://aspirant.mgou.ru/ при создании пользователя создаётся страница, написанная на...

Где можно найти код реализации библиотеки STL
Вот хочу я, например, проверить, функция std::swap() делает ли проверку на попытку обмена объекта с самим собой. Как/где я могу...

Найти, в каком из файлов и где находится указанный код
Добрый вечер! Не могу разобраться с кодом нахождения некоторых файлов! Необходимо подредактировать код и вставить другую ссылку на...

Где найти код драйвера для контроллера PL 2303?
очень нужен код драйвера для контроллера PL 2303... просто посмотреть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru