blob: 6dcc864fa86f187a88324d57ff831cdb22fb4828 (
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
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
82
83
84
|
package tesseract.objects;
import java.awt.Color;
import javax.media.j3d.Appearance;
import javax.media.j3d.ColoringAttributes;
import javax.media.j3d.Node;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.geometry.Sphere;
/**
* A particle object.
*
* @author Jesse Morgan
*/
public class Particle extends PhysicalObject {
/**
* Rendered radius of particle.
*/
private static final float RADIUS = .004f;
/**
* Default mass.
*/
private static final float DEFAULT_MASS = 1;
/**
* Number of divisions in the sphere.
*/
private static final int DIVISIONS = 8;
/**
* Create a new Particle.
*
* @param position Initial position.
* @param mass Initial mass.
* @param color Initial color. Null for random.
*/
public Particle(final Vector3f position, final float mass,
final Color3f color) {
super(position, mass);
setShape(createShape(color));
}
/**
* Create a new Particle.
*
* @param position Initial position.
* @param color Initial color. Null for random.
*/
public Particle(final Vector3f position, final Color3f color) {
this(position, DEFAULT_MASS, color);
}
/**
* Create a new particle of the give color.
*
* @param theColor The particle color or null for random.
* @return A sphere to visually represent the particle.
*/
private TransformGroup createShape(final Color3f theColor) {
Color3f color = theColor;
ColoringAttributes cAttr;
if (color == null) {
Color randomColor = Color.getHSBColor((float) Math.random(), 1, 1);
color = new Color3f(randomColor);
}
cAttr = new ColoringAttributes(color, ColoringAttributes.FASTEST);
Appearance appearance = new Appearance();
appearance.setColoringAttributes(cAttr);
Sphere sphere = new Sphere(RADIUS, Sphere.ENABLE_GEOMETRY_PICKING | Sphere.GEOMETRY_NOT_SHARED,
DIVISIONS, appearance);
TransformGroup tg = new TransformGroup();
tg.addChild(sphere);
return tg;
}
}
|