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

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

13.10.2016, 11:50. Показов 2763. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru