home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / WDESAMPL.BIN / ThreeD.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-09-18  |  3.4 KB  |  136 lines

  1. import java.applet.Applet;
  2. import java.awt.Component;
  3. import java.awt.Event;
  4. import java.awt.Graphics;
  5. import java.io.InputStream;
  6. import java.net.URL;
  7.  
  8. public class ThreeD extends Applet implements Runnable {
  9.    // $FF: renamed from: md Model3D
  10.    Model3D field_0;
  11.    boolean painted = true;
  12.    float xfac;
  13.    int prevx;
  14.    int prevy;
  15.    float xtheta;
  16.    float ytheta;
  17.    float scalefudge = 1.0F;
  18.    Matrix3D amat = new Matrix3D();
  19.    Matrix3D tmat = new Matrix3D();
  20.    String mdname;
  21.    String message;
  22.  
  23.    public void init() {
  24.       this.mdname = ((Applet)this).getParameter("model");
  25.  
  26.       try {
  27.          this.scalefudge = Float.valueOf(((Applet)this).getParameter("scale"));
  28.       } catch (Exception var1) {
  29.       }
  30.  
  31.       this.amat.yrot((double)20.0F);
  32.       this.amat.xrot((double)20.0F);
  33.       if (this.mdname == null) {
  34.          this.mdname = "model.obj";
  35.       }
  36.  
  37.       ((Applet)this).resize(((Component)this).size().width <= 20 ? 400 : ((Component)this).size().width, ((Component)this).size().height <= 20 ? 400 : ((Component)this).size().height);
  38.    }
  39.  
  40.    public void run() {
  41.       InputStream var1 = null;
  42.  
  43.       try {
  44.          Thread.currentThread().setPriority(1);
  45.          var1 = (new URL(((Applet)this).getDocumentBase(), this.mdname)).openStream();
  46.          Model3D var2 = new Model3D(var1);
  47.          this.field_0 = var2;
  48.          var2.findBB();
  49.          var2.compress();
  50.          float var3 = var2.xmax - var2.xmin;
  51.          float var4 = var2.ymax - var2.ymin;
  52.          float var5 = var2.zmax - var2.zmin;
  53.          if (var4 > var3) {
  54.             var3 = var4;
  55.          }
  56.  
  57.          if (var5 > var3) {
  58.             var3 = var5;
  59.          }
  60.  
  61.          float var6 = (float)((Component)this).size().width / var3;
  62.          float var7 = (float)((Component)this).size().height / var3;
  63.          this.xfac = 0.7F * (var6 < var7 ? var6 : var7) * this.scalefudge;
  64.       } catch (Exception var9) {
  65.          this.field_0 = null;
  66.          this.message = ((Throwable)var9).toString();
  67.       }
  68.  
  69.       try {
  70.          if (var1 != null) {
  71.             var1.close();
  72.          }
  73.       } catch (Exception var8) {
  74.       }
  75.  
  76.       ((Component)this).repaint();
  77.    }
  78.  
  79.    public void start() {
  80.       if (this.field_0 == null && this.message == null) {
  81.          (new Thread(this)).start();
  82.       }
  83.  
  84.    }
  85.  
  86.    public void stop() {
  87.    }
  88.  
  89.    public boolean mouseDown(Event var1, int var2, int var3) {
  90.       this.prevx = var2;
  91.       this.prevy = var3;
  92.       return true;
  93.    }
  94.  
  95.    public boolean mouseDrag(Event var1, int var2, int var3) {
  96.       this.tmat.unit();
  97.       float var4 = (float)(this.prevy - var3) * 360.0F / (float)((Component)this).size().width;
  98.       float var5 = (float)(var2 - this.prevx) * 360.0F / (float)((Component)this).size().height;
  99.       this.tmat.xrot((double)var4);
  100.       this.tmat.yrot((double)var5);
  101.       this.amat.mult(this.tmat);
  102.       if (this.painted) {
  103.          this.painted = false;
  104.          ((Component)this).repaint();
  105.       }
  106.  
  107.       this.prevx = var2;
  108.       this.prevy = var3;
  109.       return true;
  110.    }
  111.  
  112.    public void paint(Graphics var1) {
  113.       if (this.field_0 != null) {
  114.          this.field_0.mat.unit();
  115.          this.field_0.mat.translate(-(this.field_0.xmin + this.field_0.xmax) / 2.0F, -(this.field_0.ymin + this.field_0.ymax) / 2.0F, -(this.field_0.zmin + this.field_0.zmax) / 2.0F);
  116.          this.field_0.mat.mult(this.amat);
  117.          this.field_0.mat.scale(this.xfac, -this.xfac, 16.0F * this.xfac / (float)((Component)this).size().width);
  118.          this.field_0.mat.translate((float)(((Component)this).size().width / 2), (float)(((Component)this).size().height / 2), 8.0F);
  119.          this.field_0.transformed = false;
  120.          this.field_0.paint(var1);
  121.          this.setPainted();
  122.       } else {
  123.          if (this.message != null) {
  124.             var1.drawString("Error in model:", 3, 20);
  125.             var1.drawString(this.message, 10, 40);
  126.          }
  127.  
  128.       }
  129.    }
  130.  
  131.    private synchronized void setPainted() {
  132.       this.painted = true;
  133.       this.notifyAll();
  134.    }
  135. }
  136.