📄 annotationline.java
字号:
//
// CLASS
// AnnotationLine - 3D line used for annotation & diagrams
//
// DESCRIPTION
// This class creates a 3D, unlighted line between two 3D coordinates.
// The line's width and color can be controlled.
//
// SEE ALSO
// AnnotationArrow
//
// AUTHOR
// David R. Nadeau / San Diego Supercomputer Center
//
//
package Java3DApplet;
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.*;
class AnnotationLine
extends Primitive
{
// Parameters
private float lineWidth = 1;
private Color3f lineColor = new Color3f( 1.0f, 1.0f, 1.0f );
// 3D nodes
private Shape3D shape = null;
private LineAttributes lineAttributes = null;
private ColoringAttributes coloringAttributes = null;
private LineArray line = null;
protected Appearance mainAppearance = null;
//
// Construct a straight line
//
public AnnotationLine( float x2, float y2, float z2 )
{
// origin to given coordinate
this( 0.0f, 0.0f, 0.0f, x2, y2, z2 );
}
public AnnotationLine( float x, float y, float z,
float x2, float y2, float z2 )
{
float[] coord = new float[3];
float[] texcoord = new float[2];
// Build a shape
shape = new Shape3D( );
shape.setCapability( Shape3D.ALLOW_APPEARANCE_WRITE );
// Create geometry for a 2-vertex straight line
line = new LineArray( 2,
GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2 );
line.setCapability( GeometryArray.ALLOW_COLOR_WRITE );
// Starting point
coord[0] = x;
coord[1] = y;
coord[2] = z;
texcoord[0] = 0.0f;
texcoord[1] = 0.0f;
line.setCoordinate( 0, coord );
line.setTextureCoordinate( 0, texcoord );
// Ending point
coord[0] = x2;
coord[1] = y2;
coord[2] = z2;
texcoord[0] = 1.0f;
texcoord[1] = 0.0f;
line.setCoordinate( 1, coord );
line.setTextureCoordinate( 1, texcoord );
shape.setGeometry( line );
// Create an appearance
mainAppearance = new Appearance( );
mainAppearance.setCapability(
Appearance.ALLOW_LINE_ATTRIBUTES_WRITE );
mainAppearance.setCapability(
Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE );
lineAttributes = new LineAttributes( );
lineAttributes.setLineWidth( lineWidth );
mainAppearance.setLineAttributes( lineAttributes );
coloringAttributes = new ColoringAttributes( );
coloringAttributes.setColor( lineColor );
coloringAttributes.setShadeModel( ColoringAttributes.SHADE_FLAT );
mainAppearance.setColoringAttributes( coloringAttributes );
addChild( shape );
}
//
// Control the line width
//
public float getLineWidth( )
{
return lineWidth;
}
public void setLineWidth( float width )
{
lineWidth = width;
lineAttributes.setLineWidth( lineWidth );
mainAppearance.setLineAttributes( lineAttributes );
shape.setAppearance( mainAppearance );
}
//
// Control the line color
//
public void getLineColor( Color3f color )
{
lineColor.get( color );
}
public void getLineColor( float[] color )
{
lineColor.get( color );
}
public void setLineColor( Color3f color )
{
lineColor.set( color );
coloringAttributes.setColor( lineColor );
mainAppearance.setColoringAttributes( coloringAttributes );
shape.setAppearance( mainAppearance );
}
public void setLineColor( float r, float g, float b )
{
lineColor.set( r, g, b );
coloringAttributes.setColor( lineColor );
mainAppearance.setColoringAttributes( coloringAttributes );
shape.setAppearance( mainAppearance );
}
public void setLineColor( float[] color )
{
lineColor.set( color );
coloringAttributes.setColor( lineColor );
mainAppearance.setColoringAttributes( coloringAttributes );
shape.setAppearance( mainAppearance );
}
//
// Control the appearance
//
public void setAppearance( Appearance app )
{
mainAppearance = app;
mainAppearance.setCapability(
Appearance.ALLOW_LINE_ATTRIBUTES_WRITE );
mainAppearance.setCapability(
Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE );
mainAppearance.setLineAttributes( lineAttributes );
mainAppearance.setColoringAttributes( coloringAttributes );
shape.setAppearance( mainAppearance );
}
//
// Provide info on the shape and geometry
//
public Shape3D getShape( int partid )
{
return shape;
}
public int getNumTriangles( )
{
return 0;
}
public int getNumVertices( )
{
return 2;
}
public Appearance getAppearance(int partId)
{
return getShape(partId).getAppearance();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -