Normand Briere
2018-07-03 02e145cb923d601395acc7f15ae9e13f85ef2fbb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package mocap.gui;
 
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.text.DecimalFormat;
 
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.vecmath.Point3d;
 
import mocap.figure.Bone;
import mocap.figure.Figure;
import mocap.player.PlayerFrameListener;
 
/**
 *
 * @author Michael Kipp
 */
public class JointInspector extends JFrame implements PlayerFrameListener
{
 
    private JLabel _rpos, _tpos, _hpos, _x, _y, _z;
    private DecimalFormat _fm = new DecimalFormat("##.##");
    private Point3d _p = new Point3d();
    private Bone _bone, _root, _thorax;
 
    public JointInspector(Figure figure, Bone bone)
    {
        _bone = bone;
        _root = figure.getSkeleton();
        _thorax = figure.getSkeleton().findBone("thorax");
        figure.getPlayer().addListener(this);
        setTitle("Inspect: " + bone.getName());
        JLabel head = new JLabel("Joint: " + _bone.getName(), SwingConstants.CENTER);
        head.setBorder(BorderFactory.createEmptyBorder(10,10,5,10));
        JPanel p = new JPanel();
        p.setBorder(BorderFactory.createEmptyBorder(10,10,5,10));
        _rpos = new JLabel("root: --                         ");
        _tpos = new JLabel("thorax: --                         ");
        _hpos = new JLabel("hand: --                         ");
        _x = new JLabel("x: --");
        _y = new JLabel("y: --");
        _z = new JLabel("z: --");
        p.setLayout(new GridLayout(0,1));
        p.add(_rpos);
        p.add(_tpos);
        p.add(_hpos);
        p.add(_x);
        p.add(_y);
        p.add(_z);
        setLayout(new BorderLayout());
        add(head, BorderLayout.NORTH);
        add(p, BorderLayout.CENTER);
        pack();
        setVisible(true);
    }
 
    public void frameUpdate(int framenumber)
    {
        _bone.getWorldPosition(_p);
        Point3d rootpos = new Point3d();
        Point3d rel = new Point3d();
        Point3d tho = new Point3d();
        Point3d thopos = new Point3d();
        Point3d hpos = new Point3d();
        _root.getWorldPosition(rootpos);
        _thorax.getWorldPosition(thopos);
        _bone.getRelativeTransPosition(_root, rel);
        _bone.getRelativeTransPosition(_thorax, tho);
        _bone.getWorldPosition(hpos);
        _rpos.setText("root: (" + _fm.format(rootpos.x) + ", " + _fm.format(rootpos.y) + ", " + _fm.format(rootpos.z) + ")");
        _tpos.setText("thorax: (" + _fm.format(thopos.x) + ", " + _fm.format(thopos.y) + ", " + _fm.format(thopos.z) + ")");
        _hpos.setText("hand: (" + _fm.format(hpos.x) + ", " + _fm.format(hpos.y) + ", " + _fm.format(hpos.z) + ")");
        _x.setText("x: " + _fm.format(_p.x) + "   rx: " + _fm.format(rel.x) + "   tx: " + _fm.format(tho.x));
        _y.setText("y: " + _fm.format(_p.y) + "   ry: " + _fm.format(rel.y) + "   ty: " + _fm.format(tho.y));
        _z.setText("z: " +_fm.format(_p.z) + "   rz: " + _fm.format(rel.z) + "   txz " + _fm.format(tho.z));
    }
}