void QQuickPathInterpolator::_q_pathUpdated()
{
    if (! _path)
        return;

    qreal angle = 0;
    const QPointF pt = _path->sequentialPointAt(_progress, &angle);

    if (_x != pt.x()) {
        _x = pt.x();
        emit xChanged();
    }

    if (_y != pt.y()) {
        _y = pt.y();
        emit yChanged();
    }

    //convert to clockwise
    angle = qreal(360) - angle;
    if (qFuzzyCompare(angle, qreal(360)))
        angle = qreal(0);

    if (angle != _angle) {
        _angle = angle;
        emit angleChanged();
    }
}
示例#2
0
void AngleRadiusWidget::setAngle(double angle) {
    if (angle_ != angle) {
        angle_ = glm::clamp(angle, minAngle_, maxAngle_);;
        update();
        emit angleChanged();
    } 
}
void tst_QGraphicsTransform3D::rotation3D()
{
    QGraphicsRotation3D rot1;
    QVERIFY(rot1.origin() == QVector3D(0, 0, 0));
    QVERIFY(rot1.axis() == QVector3D(0, 0, 1));
    QCOMPARE(rot1.angle(), qreal(0.0f));

    QSignalSpy spy1(&rot1, SIGNAL(originChanged()));
    QSignalSpy spy2(&rot1, SIGNAL(axisChanged()));
    QSignalSpy spy3(&rot1, SIGNAL(angleChanged()));

    rot1.setOrigin(QVector3D(1, 2, 3));
    rot1.setAxis(QVector3D(4, -5, 6));
    rot1.setAngle(45.0f);
    QVERIFY(rot1.origin() == QVector3D(1, 2, 3));
    QVERIFY(rot1.axis() == QVector3D(4, -5, 6));
    QCOMPARE(rot1.angle(), qreal(45.0f));

    QCOMPARE(spy1.size(), 1);
    QCOMPARE(spy2.size(), 1);
    QCOMPARE(spy3.size(), 1);

    QMatrix4x4 m1;
    rot1.applyTo(&m1);

    QMatrix4x4 m2;
    m2.translate(1, 2, 3);
    m2.rotate(45.0f, QVector3D(4, -5, 6));
    m2.translate(-1, -2, -3);
    QVERIFY(isSameMatrix(m1, m2));
}
WiimoteManager::WiimoteManager(QObject *parent) :
    QObject(parent), wiimote(new Wiimote(this))
{
    worker = new CWiidConnectionWorker();
    thread = new QThread(this);
    worker->moveToThread(thread);
    thread->start();
    connect(worker, SIGNAL(wiimoteMessage(WiimoteMessage)), wiimote, SLOT(motionPlusEvent(WiimoteMessage)));
    connect(worker, SIGNAL(connected()), this, SIGNAL(connected()));
    connect(worker, SIGNAL(disconnected()), this, SIGNAL(disconnected()));
    connect(worker, SIGNAL(deviceMessage(QString,int)), this, SIGNAL(deviceMessage(QString,int)));
    connect(wiimote, SIGNAL(angleChanged(Angles<BigDecimal>)), this, SIGNAL(angleChanged(Angles<BigDecimal>)));
    connect(wiimote, SIGNAL(deltaChanged(Angles<BigDecimal>)), this, SIGNAL(deltaChanged(Angles<BigDecimal>)));
    connect(wiimote, SIGNAL(calibrationStep(int)), this, SIGNAL(calibrationStep(int)));
    connect(wiimote, SIGNAL(calibrated()), this, SIGNAL(calibrated()));
    connect(wiimote, SIGNAL(needsCalibration()), this, SIGNAL(needsCalibration()));
}
示例#5
0
QSGGravityAffector::QSGGravityAffector(QSGItem *parent) :
    QSGParticleAffector(parent), m_acceleration(-10), m_angle(90), m_xAcc(0), m_yAcc(0)
{
    connect(this, SIGNAL(accelerationChanged(qreal)),
            this, SLOT(recalc()));
    connect(this, SIGNAL(angleChanged(qreal)),
            this, SLOT(recalc()));
    recalc();
}
void QGraphicsRotation3D::setAngle(qreal value)
{
    Q_D(QGraphicsRotation3D);
    if (d->angle != value) {
        d->angle = value;
        emit transformChanged();
        emit angleChanged();
    }
}
void QGraphicsRotation::setAngle(qreal angle)
{
    Q_D(QGraphicsRotation);
    if (d->angle == angle)
        return;
    d->angle = angle;
    update();
    emit angleChanged();
}
示例#8
0
文件: boxentity.cpp 项目: RSATom/Qt
void BoxEntity::setAngle(float arg)
{
    if (m_angle == arg)
        return;

    m_angle = arg;
    emit angleChanged();
    updateTransformation();
}
示例#9
0
bool CannonField::qt_emit( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->signalOffset() ) {
    case 0: angleChanged((int)static_QUType_int.get(_o+1)); break;
    case 1: forceChanged((int)static_QUType_int.get(_o+1)); break;
    default:
	return QWidget::qt_emit(_id,_o);
    }
    return TRUE;
}
void AsemanSensors::setZero(qreal xrad, qreal yrad)
{
    p->zeroX = xrad;
    p->zeroY = yrad;

    refresh();

    Q_EMIT accChanged();
    Q_EMIT grvChanged();
    Q_EMIT angleChanged();
    Q_EMIT angleSpeedChanged();
}
示例#11
0
void CannonField::setAngle(int angle)
{
    if (angle < 5)
        angle = 5;
    if (angle > 70)
        angle = 70;
    if (currentAngle == angle)
        return;
    currentAngle = angle;
    update();
    emit angleChanged(currentAngle);
}
示例#12
0
void CannonField::setAngle( int degrees )
{
    if ( degrees < 5 )
	degrees = 5;
    if ( degrees > 70 )
	degrees = 70;
    if ( ang == degrees )
	return;
    ang = degrees;
    repaint();
    emit angleChanged( ang );
}
void ArtworkCalligraphyOptionWidget::emitAll()
{
    emit usePathChanged(m_usePath->isChecked());
    emit usePressureChanged(m_usePressure->isChecked());
    emit useAngleChanged(m_useAngle->isChecked());
    emit widthChanged(m_widthBox->value());
    emit thinningChanged(m_thinningBox->value());
    emit angleChanged(m_angleBox->value());
    emit fixationChanged(m_fixationBox->value());
    emit capsChanged(m_capsBox->value());
    emit massChanged(m_massBox->value());
    emit dragChanged(m_dragBox->value());
}
void AsemanSensors::zero()
{
    p->zeroX = p->r_vector.x*M_PI/180;
    p->zeroY = p->r_vector.y*M_PI/180;
    p->zeroZ = p->r_vector.z*M_PI/180;

    refresh();

    Q_EMIT accChanged();
    Q_EMIT grvChanged();
    Q_EMIT angleChanged();
    Q_EMIT angleSpeedChanged();
}
示例#15
0
void Kompas::setAngle(double a)
{
    a = a + m_coef_A;
    if(m_tmCourse)
        a=m_skl+a;
    if(a<0)
       a+=360;
    if(a>360)
        a-=360;
    if (a!=0)
    {
        double temp;
        double *pt=new double;
        temp=QString::number(modf(a,pt)).left(3).toDouble();
        m_afterComma=temp;
        m_fractPart=(QString::number(*pt).right(1).toDouble()+temp)*10;
        m_angle=*pt;
        m_fullangle=m_angle+temp;
    }
    else
        m_afterComma=m_fractPart=m_angle=m_fullangle=m_lastAngle=0;

    if(m_angle-m_lastAngle > 180)
    {
        m_con--;
    }
    else if(m_angle-m_lastAngle < -180)
    {
         m_con++;
    }
    m_lastAngle=m_angle;
    m_angle=m_angle+360*m_con;
    m_angle=m_angle-(m_angle-m_last)/(m_dempf*2);
    m_last=m_angle;

    if(m_fractPart-m_lastAngle1 > 50)
    {
        m_con1--;
    }
    else if(m_fractPart-m_lastAngle1 < -50)
    {
         m_con1++;
    }
    m_lastAngle1=m_fractPart;
    m_fractPart=m_fractPart+100*m_con1;
    m_fractPart=m_fractPart-(m_fractPart-m_last2)/(m_dempf*2);
    m_last2=m_fractPart;
    qApp->processEvents();
    emit angleChanged();
}
void AsemanSensors::timerEvent(QTimerEvent *e)
{
    if( e->timerId() == p->duration_timer )
    {
        Q_EMIT accChanged();
        Q_EMIT grvChanged();
        Q_EMIT angleChanged();
        Q_EMIT angleSpeedChanged();
        Q_EMIT updated();

//        qDebug() << p->a_vector.x << p->a_vector.y << p->a_vector.z
//                 << angleX() << angleY() << angleZ();
    }
    else
        QObject::timerEvent(e);
}
示例#17
0
void CannonField::setAngle( int degrees )
{
	if ( degrees < 5 )
		degrees = 5;
	if ( degrees > 70 )
		degrees = 70;
	if ( ang == degrees )
		return;
	ang = degrees;

	//清空窗口部件(通常用背景色来充满)并向窗口部件发出一个绘画事件。
	//这样的结构就是调用窗口部件的绘画事件函数一次。
	repaint();

	//使用这个函数也可以,那就不必使用repaint了。
	//update();

	//利用宏emit来发射angleChanged()信号
	emit angleChanged( ang );
}
示例#18
0
void Item3dPrivate::pretransform_append(QDeclarativeListProperty<QGraphicsTransform> *list, QGraphicsTransform *item)
{
    Item3d *object = qobject_cast<Item3d *>(list->object);
    QList<QGraphicsTransform *> *ptrans;
    if (object)
    {
        ptrans = &object->d->pretransforms;

        //We now need to connect the underlying transform so that any change will update the graphical item.
        if (!ptrans->contains(item)) {
            ptrans->append(item);            
            if (qobject_cast<QGraphicsScale *>(item)) {
                QObject::connect(item, SIGNAL(originChanged()),
                                 object, SLOT(update()));
                QObject::connect(item, SIGNAL(scaleChanged()),
                                 object, SLOT(update()));
            } else if (qobject_cast<QGraphicsRotation *>(item)) {
                QObject::connect(item, SIGNAL(originChanged()),
                                 object, SLOT(update()));
                QObject::connect(item, SIGNAL(angleChanged()),
                                 object, SLOT(update()));
                QObject::connect(item, SIGNAL(axisChanged()),
                                 object, SLOT(update()));
            } else if (qobject_cast<QGraphicsScale3D *>(item)) {
                QObject::connect(item, SIGNAL(originChanged()),
                                 object, SLOT(update()));
                QObject::connect(item, SIGNAL(scaleChanged()),
                                 object, SLOT(update()));
            } else if (qobject_cast<QGraphicsTranslation3D *>(item)) {
                QObject::connect(item, SIGNAL(translateChanged()),
                                 object, SLOT(update()));
            } else if (qobject_cast<QGraphicsFaceCamera *>(item)) {
                QObject::connect(item, SIGNAL(preserveUpVectorChanged()),
                                 object, SLOT(update()));
            }
        }
    }
    else
        qWarning()<<"Warning: could not find Item3d to add transformation to.";
}
示例#19
0
文件: square.cpp 项目: gdari/cg
void Square::rotate(double angle) {
    leftDownTriangle.rotate(angle);
    rightUpTriangle.rotate(angle);
    emit angleChanged(angle);
}
示例#20
0
void CompassPort::on()// метод для чтения из порта и его открытия, если не открыт
{

    emit timerStop();
    if(!portSensor->isOpen())
    {       

        if (portSensor->open(QIODevice::ReadWrite))// открываем порт если он еще не открыт
        {

            QSerialPortInfo *info = new QSerialPortInfo(*portSensor);//информация о порте для отладки
            m_state=1;// порт открыт


            delete info;
        }
        else
        {
            if(portSensor->isOpen())// если что-то пошло не так, закрываем порт
                portSensor->close();
        }
    }

    if(portSensor->isOpen() && portSensor->waitForReadyRead(100))// работа с открытым портом
    {

        QString data;
        QByteArray ByteArray,ByteArrayStart,ByteArrayFinish;
        bool startFinded = false;
        m_state = 1;
        while(m_state)// пока порт открыт
        {
            //if(portSensor->waitForReadyRead(1))
            {
                qint64 byteAvail = portSensor->bytesAvailable();// просматриваем кол-во доступных байн для чтения
                qApp->processEvents();
                QThread::msleep(10);//усыпляем поток, чтобы не занимал времени( данные раз в 10 секунд)
                if(byteAvail >=23)// проверка кол-ва байт, для их обработки
                {
                    ByteArray = portSensor->readAll();// чтение из буфера порта
                    data = data.fromLocal8Bit(ByteArray).trimmed();
                    if(ByteArray[3]=='p')//то ли сообщение пришло(смотри даташит хоневеловского датчика)
                    {
                        QBitArray bitdata(184),two_bytes(16);
                        for(int i = 0,j; i < 184; ++i)//формирование массива бит для парсинга сообщения
                        {
                            j=i/8;
                            if(j<=18)
                                bitdata[i] = ByteArray[j] & (1 << i%8);
                            else

                                break;
                        }

//                            //m_roll = Round(toDec(two_bytes,1)*1.41,1);
                            m_roll = QString::number((short)((ByteArray.at(6)<<8) + (ByteArray.at(5)))*360.0/65536.0,10,1).toDouble();
                            emit rollChanged(m_roll);
//                            for(int i=56,j=15;i<72&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Pitch

//                            m_pitch = Round(toDec(two_bytes,1)*1.41,1);
                            m_pitch = QString::number((short)((ByteArray.at(8)<<8) + (ByteArray.at(7)))*360.0/65536.0,10,1).toDouble();
                            emit pitchChanged(m_pitch);
                            for(int i=72,j=15;i<88&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Azimuth

                           // m_angle = Round(toDec(two_bytes,0)*1.41,1);
                            for(int i=72,j=15;i<88&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Azimuth
                            m_angle = Round(toDec(two_bytes,0)*1.41,1);
                            static int i=0;
                            if(i<=1)
                            {
                                i++;
                            }
                            else
                            {
                                emit angleChanged(m_angle);
                                i=0;
                            }


                            m_B= QString::number((short)((ByteArray.at(18)<<8) + (ByteArray.at(17)))*750.0/65536.0,10,1).toDouble();
                            emit BChanged(m_B);

//                            for(int i=152,j=15;i<168&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //coef C
//                            m_C = Round(toDec(two_bytes,1)*3,1);
                            m_C= QString::number((short)((ByteArray.at(20)<<8) + (ByteArray.at(19)))*750.0/65536.0,10,1).toDouble();

                            emit CChanged(m_C);

//                            for(int i=168,j=15;i<184&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //coef Z
//                            m_Z = Round(toDec(two_bytes,1)*1.41,1);
                            m_Z= QString::number((short)((ByteArray.at(22)<<8) + (ByteArray.at(21)))*750.0/65536.0,10,1).toDouble();
                            emit ZChanged(m_Z);


                        m_state=0;
                        qApp->processEvents();
                    }
                }
                // внимательно посмотреть этот код, кажется косяк с выбросами полей и курса в нем(!)
                else if(byteAvail >=4 && byteAvail <=23)// если сообщение не полное( разбито на два)
                {
                    ByteArray= portSensor->readAll();
                    data = data.fromLocal8Bit(ByteArray).trimmed();
                    if(ByteArray[3]=='p' && startFinded == false)
                    {
                        ByteArrayStart = ByteArray;
                        startFinded = true;

                    }
                    else if(startFinded == true)
                    {
                        ByteArrayFinish += ByteArray;
                        ByteArray = ByteArrayStart + ByteArrayFinish;
                        if(ByteArray.size() >= 23)
                        {
                            QBitArray bitdata(184),two_bytes(16);
                            for(int i = 0,j; i < 184; ++i)
                            {
                                j=i/8;
                                if(j<=23)
                                    bitdata[i] = ByteArray[j] & (1 << i%8);
                                else
                                    break;
                            }
//                            //m_roll = Round(toDec(two_bytes,1)*1.41,1);
                            m_roll = QString::number((short)((ByteArray.at(6)<<8) + (ByteArray.at(5)))*360.0/65536.0,10,1).toDouble();
                            emit rollChanged(m_roll);
//                            for(int i=56,j=15;i<72&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Pitch

//                            m_pitch = Round(toDec(two_bytes,1)*1.41,1);
                            m_pitch = QString::number((short)((ByteArray.at(8)<<8) + (ByteArray.at(7)))*360.0/65536.0,10,1).toDouble();
                            emit pitchChanged(m_pitch);
                            for(int i=72,j=15;i<88&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Azimuth

                           // m_angle = Round(toDec(two_bytes,0)*1.41,1);
                            for(int i=72,j=15;i<88&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //Azimuth
                            m_angle = Round(toDec(two_bytes,0)*1.41,1);
                            static int i=0;
                            if(i<=1)
                            {
                                i++;
                            }
                            else
                            {
                                emit angleChanged(m_angle);
                                i=0;
                            }


                            m_B= QString::number((short)((ByteArray.at(18)<<8) + (ByteArray.at(17)))*750.0/65536.0,10,1).toDouble();
                            emit BChanged(m_B);

//                            for(int i=152,j=15;i<168&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //coef C
//                            m_C = Round(toDec(two_bytes,1)*3,1);
                            m_C= QString::number((short)((ByteArray.at(20)<<8) + (ByteArray.at(19)))*750.0/65536.0,10,1).toDouble();

                            emit CChanged(m_C);

//                            for(int i=168,j=15;i<184&&j>=0;i++,j--){two_bytes[j]=bitdata[i];} //coef Z
//                            m_Z = Round(toDec(two_bytes,1)*1.41,1);
                            m_Z= QString::number((short)((ByteArray.at(22)<<8) + (ByteArray.at(21)))*750.0/65536.0,10,1).toDouble();
                            emit ZChanged(m_Z);

                            m_state=0;
                            startFinded = false;
                        }
                    }
                }
            }
        }
    }
    else
    {

    }
    emit timerStart(10);
}
示例#21
0
void AngleWidget::updateAngle(QPoint mousePos)
{
    mousePos -= QPoint(frameSize().width() / 2, frameSize().height() / 2);
    double newAngle = normalizeAngle(atan2(mousePos.y(), mousePos.x()) + M_PI_2);
    emit angleChanged(newAngle);
}
void QgsAngleMagnetWidget::angleSpinBoxValueChanged( double angle )
{
  emit angleChanged( angle );
}
示例#23
0
void QNode::tiltAngleCb(const std_msgs::Float64ConstPtr& tilt)
{
    currentTiltAngle=tilt->data;
   // cout<<"\n tiltAngle: "<<currentTiltAngle;
    emit angleChanged();
}
示例#24
0
void BrushEngine::setAngle(int angle) {
    if (this->angle == angle) return;
    this->angle = angle;
    emit angleChanged(angle);
}
示例#25
0
StaticFrameGui::StaticFrameGui(QWidget* parent): FrameGui(parent)
{

    setTitle("Static Frame");

    group = new QButtonGroup (this);
    grid = new QGridLayout (this);

    dewellSwitch = new QRadioButton (this);
    dewellSwitch->setText("Dewell (ms)");
    dewellSwitch->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
    repeatSwitch = new QRadioButton (this);
    repeatSwitch->setText("Repeat (frames)");
    repeatSwitch->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);

    group->addButton(dewellSwitch,1);
    group->addButton(repeatSwitch,2);

    grid->addWidget(dewellSwitch,2,0,1,1);
    grid->addWidget(repeatSwitch,3,0,1,1);

    QLabel * pointsLabel = new QLabel ("Points",this);
    pointsLabel->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
    pointsDisplay = new QLabel ("0",this);
    pointsDisplay->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Fixed);
    grid->addWidget(pointsLabel,1,0,1,1);
    grid->addWidget(pointsDisplay,1,1,1,1);

    dewellEntry = new QSpinBox (this);
    dewellEntry->setMinimum (40);
    dewellEntry->setMaximum (600000);

    repeatEntry = new QSpinBox (this);
    repeatEntry->setMinimum (1);
    repeatEntry->setMaximum (1000);

    grid->addWidget(dewellEntry,2,1,1,1);
    grid->addWidget(repeatEntry,3,1,1,1);
    QLabel *l = new QLabel (this);
    l->setText("ArcBall");
    l->setFrameShape(QFrame::Panel);
    l->setFrameShadow(QFrame::Raised);
    l->setAlignment(Qt::AlignHCenter);
    arcball = new ArcBall(this);
    connect (arcball,SIGNAL(angleChanged(QQuaternion)),this,SLOT(angleChangedData(QQuaternion)));
    connect (arcball,SIGNAL(mouseDown()),this,SLOT(arcballDown()));
    connect (arcball,SIGNAL(mouseUp()),this,SLOT(arcballUp()));
    grid->addWidget(l,4,0);
    grid->addWidget(arcball,5,0);
    l = new QLabel (this);
    l->setText ("Size");
    l->setFrameShape(QFrame::Panel);
    l->setFrameShadow(QFrame::Raised);
    l->setAlignment(Qt::AlignHCenter);
    grid->addWidget(l,4,1);
    size = new QSlider(Qt::Vertical,this);
    size->setRange(-200,100);
    size->setSliderPosition(0);
    grid->addWidget(size,5,1);
    setLayout(grid);
}