Exemplo n.º 1
0
transition::transition(node * n1, node * n2,QString name,QString lastId)
{
    this->n1 = n1;
    this->n2 = n2;
    this->name = new QString(name);
    this->id = new QString(generateId(lastId));
    this->p1 = new QPointF(getP1());
    this->p2 = new QPointF(getP2());

    nodesAreCircles = false;
}
Exemplo n.º 2
0
pline::pline(pnt P1, pnt P2, pnt3 A, pnt3 B, pnt3 norm, getColorFunc getColor):line(P1, P2, true) {
  if(getP1() == P1){
    a = A;
    b = B;
  }
  else{
    a = B;
    b = A;
  }
  
  normal = norm;
  numPoints = getNumPoints();
  
  Fill(getColor);
}
Exemplo n.º 3
0
Galaxy::Galaxy(const QVariantMap& map)
		: initialized(false), visible(true)
{
	// return initialized if the mandatory fields are not present
	if (!map.contains("designation"))
		return;
    
    if (map.contains("visible")) visible = map.value("visible").toBool();

	designation  = map.value("designation").toString();
	parallax = map.value("parallax").toFloat();
	period = map.value("period").toDouble();
	bperiod = map.value("bperiod").toDouble();
	frequency = map.value("frequency").toDouble();
	pfrequency = map.value("pfrequency").toDouble();
	pderivative = map.value("pderivative").toDouble();
	dmeasure = map.value("dmeasure").toDouble();
	eccentricity = map.value("eccentricity").toDouble();	
	RA = StelUtils::getDecAngle(map.value("RA").toString());
	DE = StelUtils::getDecAngle(map.value("DE").toString());	
	w50 = map.value("w50").toFloat();
	s400 = map.value("s400").toFloat();
	s600 = map.value("s600").toFloat();
	s1400 = map.value("s1400").toFloat();
	distance = map.value("distance").toFloat();
	notes = map.value("notes").toString();

	// If barycentric period not set then calculate it
	if (period==0 && frequency>0)
	{
		period = 1/frequency;
	}
	// If barycentric period derivative not set then calculate it
	if (pderivative==0)
	{
		pderivative = getP1(period, pfrequency);
	}

	initialized = true;
}
Exemplo n.º 4
0
Logical LineClass::intersectsRect(const RectangleClass rect)
{
	double l,r,t,b;
	double top_intersection;
	double bottom_intersection;
	double toptrianglepoint;
	double bottomtrianglepoint;
	double m;
	double c;
	double x0,x1;
	double y0,y1;


	l = rect.left;
	r = rect.right;
	t = rect.top;
	b = rect.bottom;

	Point start = getP1(), end = getP2();

	x0 = start.getX();
	y0 = start.getY();
	x1 = end.getX();
	y1 = end.getY();

	//case where x0 == x1 or y0 == y1
	if(x0 == x1 || y0 == y1)
	{
		//test individual side of the object in question
		LineClass top(rect.left, rect.top, rect.right, rect.top);
		if(intersects(top))
		{
			return yes;
		}

		LineClass bottom(rect.left, rect.bottom, rect.right, rect.bottom);
		if(intersects(bottom))
		{
			return yes;
		}

		/*LineClass left(rect.left, rect.top, rect.left, rect.bottom);
		if(intersects(left))
		{
			return yes;
		}

		LineClass right(rect.right, rect.top, rect.right, rect.bottom);
		if(intersects(right))
		{
			return yes;
		}*/
		return no;
	}

	// Calculate m and c for the equation for the line (y = mx+c)
	m = (y1 - y0) / (x1 - x0);
	c = y0 - (m * x0);

	// if the line is going up from right to left then the top intersect point is on the left
	if(m>0)
	{
		top_intersection = (m * l  + c);
		bottom_intersection = (m * r  + c);
	}
	// otherwise it's on the right
	else
	{
		top_intersection = (m * r  + c);
		bottom_intersection = (m * l  + c);
	}

	// work out the top and bottom extents for the triangle
	if(y0<y1)
	{
		toptrianglepoint = y0;
		bottomtrianglepoint = y1;
	}
	else
	{
		toptrianglepoint = y1;
		bottomtrianglepoint = y0;
	}

	double topoverlap;
	double botoverlap;

	// and calculate the overlap between those two bounds
	topoverlap = top_intersection > toptrianglepoint ? top_intersection : toptrianglepoint;
	botoverlap = bottom_intersection < bottomtrianglepoint ? bottom_intersection : bottomtrianglepoint;

	// (topoverlap<botoverlap) :
	// if the intersection isn't the right way up then we have no overlap

	// (!((botoverlap<t) || (topoverlap>b)) :
	// If the bottom overlap is higher than the top of the rectangle or the top overlap is
	// lower than the bottom of the rectangle we don't have intersection. So return the negative
	// of that. Much faster than checking each of the points is within the bounds of the rectangle.
	return (topoverlap < botoverlap) && (!((botoverlap < t) || (topoverlap >b )));
}
Exemplo n.º 5
0
int segmVe::operator==(segmVe & s1)
{
    return ((getP1() == s1.getP1()) && (getP2() == s1.getP2()));
}
Exemplo n.º 6
0
float ToneMap::getProbability(int v)
{
    return (param_omegas_[0] * getP1(v) + param_omegas_[1] * getP2(v) + param_omegas_[2] * getP3(v));
}
Exemplo n.º 7
0
void transition::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){

    option = NULL; //pour éviter un warning
    widget = NULL; //pour éviter un warning

    /*---------------------
    * Variables du painter
    ---------------------*/
    QPen pen;
    pen.setWidth(WIDTHLINE);
    pen.setColor(LINECOLOR);

    QBrush brush;
    brush.setColor(LINECOLOR);
    brush.setStyle(Qt::SolidPattern);

    QFont font(FONTNAME, FONTSIZE);
    QFontMetrics fm(font);
    int widthOfName = fm.width(*name); //récupération des dimenssion du text
   // int heightOfName = fm.height();


    painter->setPen(pen);
    painter->setFont(font);

    /*-----------------------------------------------------
    * dessine la ligne de du polygon (triangle de la fleche)
    ------------------------------------------------------*/

    /*-- IMPLIQUE QUE ON A CONSTRUIE L'OBJET AVEC LES NOEUD EN PARAMETTRE */
    QLineF line(getP1(),getP2());
    painter->drawLine(line);

    QPointF destPoint = line.p2().toPoint();
    int arrowSize =  6;
    double angle = ::acos(line.dx() / line.length());
    if (line.dy() >= 0){
        angle = TwoPi - angle;
    }

    QPointF destArrowP1 = destPoint + QPointF(    sin(angle - Pi / 3)      * arrowSize, cos(angle - Pi / 3)      * arrowSize);
    QPointF destArrowP2 = destPoint + QPointF(    sin(angle - Pi + Pi / 3) * arrowSize, cos(angle - Pi + Pi / 3) * arrowSize);

    QPolygonF tmp_polygon;
    tmp_polygon << line.p2() << destArrowP1 << destArrowP2;

    QPainterPath path;
    path.addPolygon(tmp_polygon);

    painter->drawPolygon(tmp_polygon);
    painter->fillPath(path, brush);

    /*------------------
    * dessine le texte
    -------------------*/

    int x = (line.p2().x() + line.p1().x())/2;
    int y =  (line.p2().y() + line.p1().y())/2;
    QPointF midlePoint(x,y);

    QString tmp_name = " "+(*name); //met un espace avant le nom afin de le décalé un peut de la ligne
    pen.setColor(TEXTCOLOR);
    painter->setPen(pen);
    painter->drawText(midlePoint.x()-widthOfName/2,midlePoint.y(),tmp_name);


}