Здравствуйте, гость ( Вход | Регистрация )
zuze | Дата 5.12.2012, 9:31 |
Что всё нормально - это окозалось ложно. Так как я брал cos и думал проблема в чём-то другом, а не в передаче alpha из класса в класс. Но благадоря что я сделал qDebuq(). Я понял что именно в передаче alpha проблемы. Последнее значение alpha в классе "l" положительное, например 1.0354, а в классе "p" оно сразуже сильно отрицательное, например 4.03456-33. Значит как-то не так я передаю переменную из класса в класс хотя вроде всё описал как Вы сказали. Как это поправить? |
|
zuze | Дата 23.11.2012, 21:33 |
Задача решена: А где переходил на другую систему координат сделал
Кстати начиналась от нуля, так как я эту строчку в конструкторе ввёл. |
|
zuze | Дата 23.11.2012, 18:40 |
RazrFalcon, это понятно, что нужно в две стороны alpha передавать. Я пока разбираюсь что бы alpha передать в одну сторону, а именно прямоугольным координатам. Я вроде всё сделал, alpha передаётся, но линия в прямоугольных координатах начинает двигаться от нуля, а не там, где были полярные координаты в момент переключения. Что же я не так сделал? Для понимания, я напишу подробный код: Файлы h
Файлы cpp
|
|
RazrFalcon | Дата 23.11.2012, 16:31 |
Тогда нужно в обе стороны передавать alpha. Я то хз как у вас там прога устроена и что делает...
|
|
zuze | Дата 23.11.2012, 9:14 |
RazrFalcon, если рисовать линии не зависящие друг от друга. То всё прекрасно рисуется. То есть класс "l" рисует по нажатию вращающуюся линию (по параллельным координатам). Класс "p" рисует по нажатию передвигающуюся линию (по прямоугольным координатам). Но если я переключаю на передвижение линии (по прямоугольным координатам), а линия в полярных координатах была допустим на 150 градусах, то и линия в прямоугольных координатах должна начинаться со 150 градусов, а не с нуля. | |
RazrFalcon | Дата 23.11.2012, 0:46 |
Так если нужно просто сохранить последние значение - зачем его вообще выносить из класса? Не проще ли сделать что бы при первом старте alpha=-1, а при последующих alpha проверялась на равенство -1, и если не -1 - то рисуем с текущей alpha. Какие проблемы. |
|
zuze | Дата 22.11.2012, 22:19 |
RazrFalcon, я не могу поставить в эту процедуру update(); , так как у меня линии вращаются по таймеру. И update(); я вызываю там, где запускаю таймер. Может как-то иначе можно? Запуск таймеров у меня производится в файле mainwindow.cpp. Моя задача состоит в том что я нажимаю на кнопочку, вертится одна линия (в полярных координатах), как нажимаю другую кнопку то рисуется другая линия, которая передвигается (по прямоугольным координатам). И что бы при переключении линия вертелась с последнего момента перед переключением, а не с нуля. Вот для этих целей я хочу что бы переменная из одного класса была видна в другом классе. |
|
RazrFalcon | Дата 22.11.2012, 21:55 |
Цитата void p::setAlpha(float value) { alpha = value; update(); } |
|
zuze | Дата 22.11.2012, 20:23 |
RazrFalcon, а вот так правильно, я это использую в коде побольше и у меня линия не двигается как будто в переменную ничего не передаётся. Файлы h
Файлы cpp
|
|
RazrFalcon | Дата 22.11.2012, 3:15 |
Пример во вложении. | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 12.5.2024, 8:17 |