beautypg.com

Ktam3874/pitx software guide – Kontron KTAM3874-pITX User Manual

Page 186

background image

KTD-S0057-I

Page 182 Linux® Programming Examples (DebianTM)


KTAM3874/pITX Software Guide


if (angleToCenter < Pi && angleToCenter > Pi / 4)

{

// Rotate left

angle += (angle < -Pi / 2) ? 0.25 : -0.25;

}

else if (angleToCenter >= Pi && angleToCenter < (Pi + Pi / 2 + Pi / 4))

{

// Rotate right

angle += (angle < Pi / 2) ? 0.25 : -0.25;

}

}

else if (::sin (angle) < 0)

{

angle += 0.25;

}

else if (::sin(angle) > 0)

{

angle -= 0.25;

}

// Try not to crash with any other mice

QList dangerMice = scene ()->items (QPolygonF ()

<< mapToScene (0, 0)

<< mapToScene (-30, -50)

<< mapToScene (30, -50));

foreach (QGraphicsItem *item, dangerMice)

{

if (item == this)

continue;

QLineF lineToMouse (QPointF (0, 0), mapFromItem (item, 0, 0));

qreal angleToMouse = ::acos (lineToMouse.dx () / lineToMouse.length ());

if (lineToMouse.dy () < 0)

angleToMouse = TwoPi - angleToMouse;

angleToMouse = normalizeAngle ((Pi - angleToMouse) + Pi / 2);

if (angleToMouse >= 0 && angleToMouse < Pi / 2)

{

// Rotate right

angle += 0.5;

}

else if (angleToMouse <= TwoPi && angleToMouse > (TwoPi - Pi / 2))

{

// Rotate left

angle -= 0.5;

}

}

This manual is related to the following products: