Jam/LineSprite

From ggc

Jump to: navigation, search

01 package Jam;
02 import java.awt.geom.Area;
03 import java.awt.geom.Ellipse2D;
04 import java.awt.geom.Point2D;
05 import java.awt.geom.Rectangle2D;
06 
07 import fang.*;
08 
09 public class LineSprite extends Sprite
10 {
11    private Point2D.Double start;
12    private Point2D.Double end;
13    private boolean firstTime=true;
14    private double lineThickness=0.05;
15 
16    public LineSprite(double startX, double startY,
17                      double endX, double endY)
18    {
19       start=new Point2D.Double(startX, startY);
20       end=new Point2D.Double(endX, endY);
21       initializeLine();
22    }
23 
24    //need to fix setting new endpoints and thickness.
25 
26    private void initializeLine()
27    {
28       Point2D.Double midpoint=new Point2D.Double(
29                                   (start.x+end.x)/2,
30                                   (start.y+end.y)/2);
31       double angle=Math.atan2(end.y-start.y, end.x-start.x);
32       double distance=start.distance(end);
33       Rectangle2D.Double rectangle=new Rectangle2D.Double(
34                                        00, distance, lineThickness);
35       Ellipse2D.Double startButt=new Ellipse2D.Double(
36                                      -lineThickness/20,
37                                      lineThickness, lineThickness);
38       Ellipse2D.Double endButt=new Ellipse2D.Double(
39                                    distance-lineThickness/20,
40                                    lineThickness, lineThickness);
41       Area total=new Area(rectangle);
42       total.add(new Area(startButt));
43       total.add(new Area(endButt));
44       setShape(total);
45       double scale=lineThickness+Math.max(Math.abs(start.x-end.x), Math.abs(start.y-end.y));
46       setScale(scale);
47       midpoint.x+=getLocation().x;
48       midpoint.y+=getLocation().y;
49       setLocation(midpoint);
50       angle+=getRotation();
51       setRotation(angle);
52    }
53 
54    public void setLineThickness(double thickness)
55    {
56       lineThickness=thickness;
57       initializeLine();
58    }
59 }
60 


Download/View Jam/LineSprite.java




Views
Personal tools
Add to 
del.icio.usAdd to 
diggAdd to 
FacebookAdd to 
favoritesAdd to 
GoogleAdd to 
MySpaceAdd to 
PrintAdd to 
SlashdotAdd to 
StumbleUponAdd to 
Twitter