Esempio n. 1
0
void Head::sweepWithoutCompass() {
  uint8_t pos = 0;
  for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees 
  { // in steps of 1 degree 
    pointTo(pos); // tell servo to go to position in variable 'pos' 
  } 
  for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees 
  { 
    pointTo(pos); // tell servo to go to position in variable 'pos' 
  } 
}
void GetMargin::UnitChange(const QString unite)
{
	unitas = unite;
	setter.setValue("CurrentRunningUnit",unitas);
	doubleSpinBox->setSuffix(QString(" %1.").arg(unitas));
	doubleSpinBox_2->setSuffix(QString(" %1.").arg(unitas));
	doubleSpinBox_3->setSuffix(QString(" %1.").arg(unitas));
	doubleSpinBox_4->setSuffix(QString(" %1.").arg(unitas));

	doubleSpinBox_4->setValue(pointTo(a1,unitas));    /* top */
	doubleSpinBox_2->setValue(pointTo(a2,unitas));      /* right*/
	doubleSpinBox->setValue(pointTo(a3,unitas));       /* bottom */
	doubleSpinBox_3->setValue(pointTo(a4,unitas));     /* left */


}
Esempio n. 3
0
void RobotControl::turn(int angle){
	int originalAngle=compassRead();
	int target=originalAngle+angle;
	pointTo(target);
	/*uint8_t speed=80;
	target=target%360;
	if(target<0){
		target+=360;
	}
	int direction=angle;
	while(1){
		if(direction>0){
			motorsWrite(speed,speed);//right
			delay(10);
		}else{
			motorsWrite(-speed,-speed);//left
			delay(10);
		}
		int currentAngle=compassRead();
		int diff=target-currentAngle;
		if(diff<-180) 
			diff += 360;
		else if(diff> 180) 
			diff -= 360;
		direction=-diff;
		
		if(abs(diff)<5){
			motorsWrite(0,0);
			return;
		}
	}*/
}
void MaxFlowVisualizer::drawEdge(const Edge &edge, QPainter &painter) const {
    QPen pen;
    pen.setWidth(3);
    // Ребро, которое считается "допустимым" по алгоритму, выделяем черным.
    if (relabelToFrontAlgo.getVertexHeight(edge.getFirstVertexIndex())
        == relabelToFrontAlgo.getVertexHeight(edge.getSecondVertexIndex()) + 1) {
        pen.setColor(Qt::black);
    }
    else {
        pen.setColor(Qt::gray);
    }
    if (edge.getFlow() != 0) {
        pen.setColor(Qt::darkBlue);
    }
    // Если в последнем действии алгоритма произошло проталкивание по этому ребру,
    // то выделим его красным.
    if (lastAlgoAction.getType() == AlgoAction::ACTION_PUSH && lastAlgoAction.getEdgeInfo() == edge) {
        pen.setColor(Qt::red);
    }
    painter.setPen(pen);
    QPoint pointFrom(verteciesList[edge.getFirstVertexIndex()].getCenterCoordX(),
                     verteciesList[edge.getFirstVertexIndex()].getCenterCoordY());
    QPoint pointTo(verteciesList[edge.getSecondVertexIndex()].getCenterCoordX(),
                   verteciesList[edge.getSecondVertexIndex()].getCenterCoordY());
    double length = sqrt(pow(pointFrom.x() - pointTo.x(), 2)
                         + pow(pointFrom.y() - pointTo.y(), 2));
    long vertexRaduis = verteciesList[edge.getSecondVertexIndex()].getRadius();
    QPoint offsetVector((pointFrom.x() - pointTo.x()) * vertexRaduis / length,
                        (pointFrom.y() - pointTo.y()) * vertexRaduis / length);
    QPoint arrow((pointFrom.x() - pointTo.x()) * 20 / length,
                 (pointFrom.y() - pointTo.y()) * 20 / length);
    // Рисование стрелки (самих маленьких боковых линий).
    // Перенесем систему координат в точку конца ребра (ориенированного).
    // Возьмем маленький отрезок ребра, и нарисуем его, повернув при этом систуму координат
    // на +30 и -30 градусов соответственно относительно исходного ребра.
    // Получилась стрелка ->
    // После этого восстановим систему координат.
    painter.setPen(pen);
    painter.drawLine(pointFrom, pointTo);
    painter.translate(pointTo.x(), pointTo.y());
    // Еще нужно отступить от конца ребра на радиус вершины
    // (т.к. ребро идет от центра к центру).
    painter.translate(offsetVector.x(), offsetVector.y());
    painter.rotate(30);
    painter.drawLine(QPoint(0, 0), arrow);
    painter.rotate(-60);
    painter.drawLine(QPoint(0, 0), arrow);
    painter.resetTransform();
    // Выводим информацию о ребре (flow | capacity) по середине ребра.
    if (state == ALGORITHM_RUN || (state == ALGORITHM_TERM && edge.flow != 0)) {
        QPen penForEdgeInfo;
        penForEdgeInfo.setColor(Qt::darkGreen);
        painter.setPen(penForEdgeInfo);
        std::string edgeInfo = "(" + std::to_string(edge.getFlow()) + " | " + std::to_string(edge.getCapacity()) + ")";
        painter.drawText(pointFrom.x() + (pointTo.x() - pointFrom.x()) / 2,
                         pointFrom.y() + (pointTo.y() - pointFrom.y()) / 2,
                         edgeInfo.c_str());
    }
}
Esempio n. 5
0
void Head::calibrate() {
  Serial.println("Calibrating");
  if (compass == 0) {
    return;
  }
  
  int initialHeading = compass->getHeading();
  if (initialHeading == -1) {
    return;
  }
  
  uint8_t pos = 0;

  Serial.print("Initial heading :");
  Serial.println(initialHeading);

  Serial.println("Look left");
  for(pos = HEADING_FULL_RIGHT; pos < HEADING_FULL_LEFT; pos += 1)
  { // in steps of 1 degree 
    pointTo(pos); // tell servo to go to position in variable 'pos' 
    Serial.print("Pos :");
    Serial.print(pos);
    Serial.print(", Heading :");
    Serial.println(compass->getAvgHeading());
  } 
  Serial.print("End look left, wait. Current heading :");
  Serial.println(compass->getAvgHeading());
  Serial.println("Look right");
  for(pos = HEADING_FULL_LEFT; pos>HEADING_FULL_RIGHT; pos-=1)
  { 
    pointTo(pos); // tell servo to go to position in variable 'pos' 
    Serial.print("Pos :");
    Serial.print(pos);
    Serial.print(", Heading :");
    Serial.println(compass->getAvgHeading());
  } 
  Serial.print("End look right. Current heading :");
  Serial.println(compass->getAvgHeading());
  pointTo(HEADING_CENTERED);
  Serial.println("End of calibration");  
}
Esempio n. 6
0
int PanelPageSize::FillFopAttributes(QDomElement e)
{
	const qreal TopMargin = pointTo(P_margin.x(),"mm");
	const qreal RightMargin = pointTo(P_margin.y(),"mm");
	const qreal BottomMargin = pointTo(P_margin.width(),"mm");
	const qreal LeftMargin = pointTo(P_margin.height(),"mm");
	e.setAttribute("margin-top",QString("%1mm").arg(TopMargin));
	e.setAttribute("margin-bottom",QString("%1mm").arg(BottomMargin));
	e.setAttribute("margin-left",QString("%1mm").arg(LeftMargin));
	e.setAttribute("margin-right",QString("%1mm").arg(RightMargin));
	e.setAttribute("page-width",QString("%1mm").arg(pointTo(G_regt.width(),"mm")));
	e.setAttribute("page-height",QString("%1mm").arg(pointTo(G_regt.height(),"mm")));
	return 1;
}
void ObjectPointer::load(InputStream& stream)
{
	pointTo(stream.readUint32());
}
Esempio n. 8
0
qreal toUnit(qreal unit , const QString unita)
{
	return pointTo(unit,unita);
}