Попробавал setTransform. В этом случае картинка svg вставляется без изменения масштаба. Однако появляется другая загвоздочка. Для правильного позиционирования центра изображения (вершины сектора) необходимо сместить центр вращения Qpainter.
Получился следующий код
int x0 = 150; // Специально изменил, чтобы показать влияние различных координат
Обратил внимание на воспоминания о работе на машине СМ-4. Я со второго курса обучался на языке PL1 на ЭВМ серии ЕС. Там в многопользовательском режиме была настоящая борьба «за место под солнцем». Кроме языка управления заданиями не было более никаких средств. И вот на третьем курсе преподаватель по мат. анализу привёл нас троих на другой факультет кафедру прикладной математики где находилась машина СМ-4. И было это тоже в 1988 году. Порадовала тогда резвая работа много пользовательского режима на 16 мест. Программировали тогда на Фортране. (По сравнению с PL1 Фортран - это шаг назад. Но скорось работы многопользовательской системы всё компенсировала.) Был там и паскаль, но он тогда не порадовал. Голова тогда очень хорошо работала в плане борьбы «за место под солнцем» (школа ЕС ЭВМ не прошла даром) – удавалось на пол часика дольше поработать. Проблема была во фрагментации дискового пространства, файлы формировались только в непрерывной области дискового пространства, а с течением времени таковое уменьшалось. По окончании рабочего времени оператор запускал утилиту дефрагментации - все файлы переписывались в начало диска.
Попалась тогда в библиотеке книжка Ботвинника о создании шахматных программ на компьютере. И тогда была сделана примитивная программа игры в шахматы, в которой ходы выбирались из соображений оценки позиции.
Потом я выпустился и СМ-4 больше не увидел.
Что интересно, каталогизированная процедура расчётов методом Рунге-Кутта с тех времён с фортрана перекочевала в абстрактные классы на языке C++ в настоящее время.
Согласен. В этом случае нет заморочек с синусами, косинусами и существенно уменьшается возможность внесения методической ошибки.
Спасибо за совет.
Попробавал setTransform. В этом случае картинка svg вставляется без изменения масштаба. Однако появляется другая загвоздочка. Для правильного позиционирования центра изображения (вершины сектора) необходимо сместить центр вращения Qpainter.
Получился следующий код
int x0 = 150; // Специально изменил, чтобы показать влияние различных координат
int y0 = 50;
int w0 = 300;
QRect rect0(x0, y0, w0, w0);
QTransform t0;
qreal ugRot = 30.; // Угол поворота изменил (45 градусов как-то симметрично)
qreal sinUgRot = sin(ugRot * M_PI / 180.);
qreal cosUgRot = cos(ugRot * M_PI / 180.);
qreal rx = x0 + w0 / 2.;
qreal ry = y0 + w0 / 2.;
t0.translate(rx (1. - cosUgRot) + ry sinUgRot, - rx sinUgRot - ry (cosUgRot - 1.)); // Смещение центра поворота
t0.rotate(ugRot);
myPaiter.begin(Pm0);
myPaiter.drawPixmap(rect0, p0); // Исходный сектор
myPaiter.setTransform(t0);
myPaiter.drawPixmap(rect0, p0); // Сектор после поворота
myPaiter.end();
Получилась следующая картинка
Если центр поворота не смещать картинка будет такая
Обратил внимание на воспоминания о работе на машине СМ-4. Я со второго курса обучался на языке PL1 на ЭВМ серии ЕС. Там в многопользовательском режиме была настоящая борьба «за место под солнцем». Кроме языка управления заданиями не было более никаких средств. И вот на третьем курсе преподаватель по мат. анализу привёл нас троих на другой факультет кафедру прикладной математики где находилась машина СМ-4. И было это тоже в 1988 году. Порадовала тогда резвая работа много пользовательского режима на 16 мест. Программировали тогда на Фортране. (По сравнению с PL1 Фортран - это шаг назад. Но скорось работы многопользовательской системы всё компенсировала.) Был там и паскаль, но он тогда не порадовал. Голова тогда очень хорошо работала в плане борьбы «за место под солнцем» (школа ЕС ЭВМ не прошла даром) – удавалось на пол часика дольше поработать. Проблема была во фрагментации дискового пространства, файлы формировались только в непрерывной области дискового пространства, а с течением времени таковое уменьшалось. По окончании рабочего времени оператор запускал утилиту дефрагментации - все файлы переписывались в начало диска.
Попалась тогда в библиотеке книжка Ботвинника о создании шахматных программ на компьютере. И тогда была сделана примитивная программа игры в шахматы, в которой ходы выбирались из соображений оценки позиции.
Потом я выпустился и СМ-4 больше не увидел.
Что интересно, каталогизированная процедура расчётов методом Рунге-Кутта с тех времён с фортрана перекочевала в абстрактные классы на языке C++ в настоящее время.