aboutsummaryrefslogtreecommitdiff
path: root/src/Graph3D.java
blob: 80789ec79ddd7b2d7637cd5f784ce71c8b0deaa2 (plain) (blame)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*     */ import java.awt.Color;
/*     */ import java.awt.Graphics;
/*     */ import java.awt.Graphics2D;
/*     */ import java.awt.geom.AffineTransform;
/*     */ import java.awt.image.BufferedImage;
/*     */ import java.util.ArrayList;
/*     */ import java.util.List;
/*     */ 
/*     */ public class Graph3D extends GraphWorld
/*     */   implements CoordinateSystem
/*     */ {
/*  20 */   protected List<PointGroup> points = new ArrayList();
/*  21 */   private boolean slow = false;
/*  22 */   private String[] equations = { "x%y" };
/*  23 */   private boolean loaded = false;
/*     */   private BufferedImage background;
/*     */   public static final double GLOBAL_SIZE = 300.0D;
/*  26 */   private Point3D[][] axies = { 
/*  27 */     { new Point3D(0.0D, 200.0D, 0.0D, 0.0D, 0.0D, 0.0D), new Point3D(0.0D, -200.0D, 0.0D, 0.0D, 0.0D, 0.0D) }, 
/*  28 */     { new Point3D(200.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D), new Point3D(-200.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D) }, 
/*  29 */     { new Point3D(0.0D, 0.0D, 200.0D, 0.0D, 0.0D, 0.0D), new Point3D(0.0D, 0.0D, -200.0D, 0.0D, 0.0D, 0.0D) } };
/*     */ 
/*  31 */   private static Color[] colors = { 
/*  32 */     Color.GREEN, 
/*  33 */     Color.BLUE, 
/*  34 */     Color.RED };
/*     */ 
/*  36 */   protected Object3D[] axiesChar = { 
/*  37 */     new YAxisChar(0.0D, 210.0D, 0.0D, 0.0D, 0.0D, 180.0D, this, Color.GREEN), 
/*  38 */     new XAxisChar(210.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, this, Color.BLUE), 
/*  39 */     new ZAxisChar(0.0D, 0.0D, 210.0D, 0.0D, 0.0D, 180.0D, this, Color.RED), 
/*  40 */     new YAxisChar(0.0D, -210.0D, 0.0D, 0.0D, 0.0D, 180.0D, this, Color.GREEN), 
/*  41 */     new XAxisChar(-210.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, this, Color.BLUE), 
/*  42 */     new ZAxisChar(0.0D, 0.0D, -210.0D, 0.0D, 0.0D, 180.0D, this, Color.RED), 
/*  43 */     new ZAxis(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, this, Color.RED), 
/*  44 */     new XAxis(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, this, Color.BLUE), 
/*  45 */     new YAxis(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D, this, Color.GREEN) };
/*     */ 
/*  47 */   private double moveX = 0.0D;
/*  48 */   private double moveY = 0.0D;
/*  49 */   private double rotoZ = 0.0D;
/*  50 */   private double rotoY = 0.0D;
/*  51 */   private double rotoX = 0.0D;
/*     */ 
/*  53 */   private double scale = 1.0D;
/*  54 */   private double pivX = 0.0D;
/*  55 */   private double pivY = 0.0D;
/*  56 */   private double pivZ = 0.0D;
/*  57 */   private double zCam = 300.0D;
/*  58 */   private double xCam = 0.0D;
/*  59 */   private double yCam = 0.0D;
/*  60 */   private boolean drawAxies = true;
/*     */ 
/*  62 */   public Graph3D() { super(1280, 1024);
/*  63 */     this.background = new BufferedImage(1, 1, 1);
/*  64 */     Graphics g = this.background.getGraphics();
/*  65 */     g.setColor(new Color(0));
/*  66 */     g.fillRect(0, 0, this.background.getWidth(), this.background.getHeight());
/*  67 */     this.scale /= this.zCam;
/*     */ 
/*  69 */     for (Object3D add : this.axiesChar)
/*  70 */       addEvent(add);
/*     */   }
/*     */ 
/*     */   public void setSlow(boolean slow)
/*     */   {
/*  76 */     this.slow = slow;
/*     */   }
/*  78 */   public void reset() { this.points = new ArrayList(); } 
/*     */   public boolean isLoaded() {
/*  80 */     return this.loaded; } 
/*  81 */   public double getXRotation() { return this.rotoX; } 
/*  82 */   public double getYRotation() { return this.rotoY; } 
/*  83 */   public double getZRotation() { return this.rotoZ; } 
/*  84 */   public double getXMove() { return this.moveX; } 
/*  85 */   public double getYMove() { return this.moveY; } 
/*  86 */   public double getScale() { return this.scale; } 
/*  87 */   public double getXPivot() { return this.pivX; } 
/*  88 */   public double getYPivot() { return this.pivY; } 
/*  89 */   public double getZPivot() { return this.pivZ; } 
/*  90 */   public double getCameraZ() { return this.zCam; } 
/*  91 */   public double getCameraX() { return this.xCam; } 
/*  92 */   public double getCameraY() { return this.yCam; } 
/*     */   public void setBackground(BufferedImage image) {
/*  94 */     this.background = image;
/*  95 */     repaint();
/*     */   }
/*     */   public BufferedImage getBackgroundImage() {
/*  98 */     return this.background;
/*     */   }
/* 100 */   public void setEquations(String[] equations) { this.equations = equations; } 
/* 101 */   public String[] getEquations() { return this.equations; } 
/*     */   public void setXRotation(double x) {
/* 103 */     if (x < 0.0D) x += 360.0D;
/* 104 */     this.rotoX = (x % 360.0D);
/*     */   }
/*     */   public void setYRotation(double y) {
/* 107 */     if (y < 0.0D) y += 360.0D;
/* 108 */     this.rotoY = (y % 360.0D);
/*     */   }
/*     */   public void setZRotation(double z) {
/* 111 */     if (z < 0.0D) z += 360.0D;
/* 112 */     this.rotoZ = (z % 360.0D); } 
/* 113 */   public void setXMove(double x) { this.moveX = x; } 
/* 114 */   public void setYMove(double y) { this.moveY = y; } 
/* 115 */   public void setScale(double s) { this.scale = s; } 
/* 116 */   public void setXPivot(double x) { this.pivX = x; } 
/* 117 */   public void setYPivot(double y) { this.pivY = y; } 
/* 118 */   public void setZPivot(double z) { this.pivZ = z; } 
/* 119 */   public void setCameraZ(double z) { this.zCam = z; } 
/* 120 */   public void setCameraX(double x) { this.xCam = x; } 
/* 121 */   public void setCameraY(double y) { this.yCam = y; } 
/*     */   public void setDrawAxies(boolean draw) {
/* 123 */     this.drawAxies = draw;
/*     */   }
/*     */   public void invoke(Graphics g) {
/* 126 */     if (this.slow) g = getGraphics();
/* 127 */     Graphics2D g2 = (Graphics2D)g;
/* 128 */     if (this.background != null) {
/* 129 */       g2.drawImage(this.background, AffineTransform.getScaleInstance(getWidth() / this.background.getWidth(), getHeight() / this.background.getHeight()), null);
/*     */     }
/*     */ 
/* 141 */     g.setColor(new Color(11141120));
/*     */ 
/* 143 */     for (int i = 0; i < this.points.size(); i++) {
/* 144 */       PointGroup p = (PointGroup)this.points.get(i);
/* 145 */       if (p != null)
/* 146 */         p.invoke(g, this);
/*     */     }
/* 148 */     if (this.drawAxies) {
/* 149 */       for (int i = 0; i < super.getEvents().size(); i++) {
/* 150 */         ((GraphicsEvent)super.getEvents().get(i)).invoke(g);
/*     */       }
/*     */     }
/* 153 */     int y = 0;
/*     */   }
/*     */   public List<PointGroup> getPoints() {
/* 156 */     return this.points;
/*     */   }
/*     */   public boolean isFocusable() {
/* 159 */     return true;
/*     */   }
/*     */   public void rotateLeft(double amt) {
/* 162 */     this.rotoZ += amt;
/*     */   }
/*     */ 
/*     */   public static double equation(String equation, double x, double y) {
/*     */     try {
/* 167 */       return Double.parseDouble(ControlPanel.figure(equation.replaceAll("x", x).replaceAll("y", y)));
/*     */     }
/*     */     catch (Exception e) {
/*     */     }
/* 171 */     return (0.0D / 0.0D);
/*     */   }
/*     */ 
/*     */   protected void clean() {
/* 175 */     for (int i = 0; i < this.points.size(); i++)
/* 176 */       if (this.points.get(i) == null) this.points.remove(i);
/*     */   }
/*     */ }

/* Location:           Modulus.jar
 * Qualified Name:     Graph3D
 * JD-Core Version:    0.6.2
 */