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

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

13.10.2016, 11:50. Показов 2812. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru