sm
apps
qtv
qlaserdata.cpp
Go to the documentation of this file.
1
#include <QGraphicsScene>
2
#include <QPainter>
3
#include <QStyleOption>
4
5
#include "
qlaserdata.h
"
6
#include "qlaserdata.moc"
7
8
9
QLaserData::QLaserData
(
LDP
ld): ld(ld)
10
{
11
this->
countour
=
createCountour
();
12
double
*
p
= ld->
estimate
;
13
setPos(QPointF(
p
[0],
p
[1]));
14
rotate(
CSM::rad2deg
(
p
[2]));
15
}
16
17
QRectF
QLaserData::boundingRect
()
const
18
{
19
return
countour
.boundingRect();
20
}
21
22
QPainterPath
QLaserData::shape
()
const
23
{
24
return
countour
;
25
}
26
27
QPainterPath
QLaserData::createCountour
() {
28
ld_compute_cartesian
(
ld
);
29
struct
stroke_sequence
sequence[
ld
->nrays];
30
compute_stroke_sequence
(
ld
, sequence, 100, 0.1);
31
32
QPainterPath path;
33
for
(
int
i=0;i<
ld
->
nrays
;i++) {
34
if
(sequence[i].
valid
==0)
continue
;
35
double
*
p
= sequence[i].
p
;
36
if
(sequence[i].
begin_new_stroke
)
37
path.moveTo(
p
[0],
p
[1]);
38
else
39
path.lineTo(
p
[0],
p
[1]);
40
}
41
return
path;
42
}
43
44
void
QLaserData::paint
(QPainter *painter,
const
QStyleOptionGraphicsItem *, QWidget *)
45
{
46
// Body
47
// painter->setBrush(color);
48
/* painter->drawEllipse(-10, -20, 20, 40);
49
50
// Eyes
51
painter->setBrush(Qt::white);
52
painter->drawEllipse(-10, -17, 8, 8);
53
painter->drawEllipse(2, -17, 8, 8);
54
55
// Nose
56
painter->setBrush(Qt::black);
57
painter->drawEllipse(QRectF(-2, -22, 4, 4));
58
59
60
// Ears
61
painter->setBrush(scene()->collidingItems(this).isEmpty() ? Qt::darkYellow : Qt::red);
62
painter->drawEllipse(-17, -12, 16, 16);
63
painter->drawEllipse(1, -12, 16, 16);
64
*/
65
// Tail
66
painter->setPen(Qt::black);
67
painter->setBrush(Qt::NoBrush);
68
/* painter->setBrush(Qt::red);*/
69
painter->drawPath(
countour
);
70
}
71
72
void
QLaserData::timerEvent
(QTimerEvent *)
73
{
74
75
// rotate(dx);
76
// setPos(mapToParent(0, -(3 + sin(speed) * 3)));
77
}
p
struct @0 p
QLaserData::boundingRect
QRectF boundingRect() const
Definition:
qlaserdata.cpp:17
stroke_sequence::p
double p[2]
Definition:
laser_data_drawing.h:67
QLaserData::createCountour
QPainterPath createCountour()
Definition:
qlaserdata.cpp:27
laser_data::nrays
int nrays
Definition:
laser_data.h:17
rad2deg
double rad2deg(double rad)
Definition:
math_utils.c:79
QLaserData::countour
QPainterPath countour
Definition:
qlaserdata.h:25
QLaserData::ld
LDP ld
Definition:
qlaserdata.h:24
stroke_sequence::valid
int valid
Definition:
laser_data_drawing.h:65
laser_data::estimate
double estimate[3]
Definition:
laser_data.h:40
stroke_sequence::begin_new_stroke
int begin_new_stroke
Definition:
laser_data_drawing.h:63
QLaserData::QLaserData
QLaserData(LDP ld)
Definition:
qlaserdata.cpp:9
qlaserdata.h
QLaserData::paint
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Definition:
qlaserdata.cpp:44
ld_compute_cartesian
void ld_compute_cartesian(LDP ld)
Definition:
laser_data.c:118
stroke_sequence
Definition:
laser_data_drawing.h:62
laser_data
Definition:
laser_data.h:16
QLaserData::shape
QPainterPath shape() const
Definition:
qlaserdata.cpp:22
QLaserData::timerEvent
void timerEvent(QTimerEvent *event)
Definition:
qlaserdata.cpp:72
compute_stroke_sequence
void compute_stroke_sequence(LDP ld, struct stroke_sequence *draw_info, double horizon, double connect_threshold)
Definition:
laser_data_drawing.c:114
csm
Author(s): Andrea Censi
autogenerated on Wed Aug 17 2022 02:50:34