Search
Write a publication
Pull to refresh
1
0
Send message

Согласен. В этом случае нет заморочек с синусами, косинусами и существенно уменьшается возможность внесения методической ошибки.

Спасибо за совет.

Попробавал 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++ в настоящее время.

Information

Rating
Does not participate
Registered
Activity

Specialization

Fullstack Developer, Application Developer