blob: 6d3d0582a412eddcd84a84d05d8f67bba50880c0 (
plain)
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
|
package com.google.skar;
import android.graphics.Matrix;
import android.graphics.Path;
import android.graphics.PointF;
public class SkARFingerPainting { ;
public Path path = new Path();
private int numberOfPoints = 0;
// Holds the model matrix of the first point added to such that the path can be drawn at the
// model location (i.e on the Plane)
private float[] modelMatrix;
// Holds the inverse model matrix of the first point that was added such that the path is drawn
// first at (0, 0)
private float[] inverseModelMatrix;
public SkARFingerPainting() {}
// Adds another point to the path in Local space (i.e apply InverseModelMatrix to points located
// in Global space (e.g hit positions acquired through hit tests)
public void addPoint(PointF p) {
if (numberOfPoints == 0) {
path.moveTo(p.x, p.y);
} else {
path.lineTo(p.x, p.y);
}
numberOfPoints++;
}
public boolean isEmpty() {
return numberOfPoints == 0;
}
public float[] getModelMatrix() {
return modelMatrix;
}
public float[] getRawInverseModelMatrix() {
return inverseModelMatrix;
}
public Matrix getInverseModelMatrix() {
return SkARMatrix.createMatrixFrom4x4(inverseModelMatrix);
}
public void setModelMatrix(float[] m) {
modelMatrix = m;
}
public void setInverseModelMatrix(float[] m) {
inverseModelMatrix = m;
}
}
|