⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 squareplanesolid.java

📁 基于面向对象的数据库编程
💻 JAVA
字号:
package brgeometry;

import helper.ProBag;

/**
 * <p>Title: Broundary Rrepresentaion</p>
 * <p>Description: 立方体</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: USTC</p>
 * @author unascribed
 * @version 1.0
 */

public class SquarePlaneSolid
    extends PlaneSolid {

  private double length;
  private SquarePlaneFace f1, f2, f3, f4, f5, f6;
  public  String name;
  //public double volume,surface;

  public SquarePlaneSolid() {
    this.length = 0;
  }

  //实现对于体积的计算
  public double getVolume() {
    return this.length * this.length * this.length;
  }
  public void setName (String name )
  {
    this.name=name;
  }
  public String getName (){
    return this.name;
  }

  //实现对于面积的计算
  public double getSurface() {
    return 6 * (this.length * this.length);
  }

  //定义属性设置的统一的接口
  public void setPro(ProBag proBag) {
    double length = proBag.getLength();

    //利用引用链重写这些属性
    this.f1.getlowBeeline().getStartVertice().translate(0.0, 0.0, 0.0); //v1
    this.f1.getrightBeeline().getStartVertice().translate(length -
        this.length, 0.0, 0.0); //v2
    this.f1.getupBeeline().getStartVertice().translate(length -
        this.length, length - this.length, 0.0); //v3
    this.f1.getleftBeeline().getStartVertice().translate(0.0,
        length - this.length, 0.0); //v4
    this.f2.getlowBeeline().getStartVertice().translate(0.0, 0.0,
        length - this.length); //v5
    this.f2.getrightBeeline().getStartVertice().translate(length -
        this.length, 0.0, length - this.length); //v6
    this.f2.getupBeeline().getStartVertice().translate(length -
        this.length, length - this.length, length - this.length); //v7
    this.f2.getleftBeeline().getStartVertice().translate(0.0,
        length - this.length, length - this.length); //v8

    this.length = length;


    this.setVolume(this.getVolume());
    this.setSurface(this.getSurface());

  }

  public double getLength() {
    return this.length;
  }

  public ProBag getPro() {
    ProBag probag = new ProBag();
    probag.setLength(getLength());
    return probag;
  }

  public void init(ProBag proBag) {
    //利用边长求出点的位置,然后确定边、确定面、确定体
    //用传入的参数求出点的位置
    this.length = proBag.getLength();
    Vertice v0 = new Vertice(0, 0, 0);
    Vertice v1 = new Vertice(v0.getX(), v0.getY(), v0.getZ());
    Vertice v2 = new Vertice(v0.getX() + this.length, v0.getY(), v0.getZ());
    Vertice v3 = new Vertice(v0.getX() + this.length, v0.getY() + this.length, v0.getZ());
    Vertice v4 = new Vertice(v0.getX(), v0.getY() + this.length, v0.getZ());
    Vertice v5 = new Vertice(v0.getX(), v0.getY(), v0.getZ() + this.length);
    Vertice v6 = new Vertice(v0.getX() + this.length, v0.getY(), v0.getZ() + this.length);
    Vertice v7 = new Vertice(v0.getX() + this.length, v0.getY() + this.length,
                             v0.getZ() + this.length);
    Vertice v8 = new Vertice(v0.getX(), v0.getY() + this.length, v0.getZ() + this.length);

    //用点确定边
    BeelineEdge e1 = new BeelineEdge(v1, v2);
    BeelineEdge e2 = new BeelineEdge(v2, v3);
    BeelineEdge e3 = new BeelineEdge(v3, v4);
    BeelineEdge e4 = new BeelineEdge(v4, v1);
    BeelineEdge e5 = new BeelineEdge(v5, v6);
    BeelineEdge e6 = new BeelineEdge(v6, v7);
    BeelineEdge e7 = new BeelineEdge(v7, v8);
    BeelineEdge e8 = new BeelineEdge(v8, v5);
    BeelineEdge e9 = new BeelineEdge(v1, v5);
    BeelineEdge e10 = new BeelineEdge(v2, v6);
    BeelineEdge e11 = new BeelineEdge(v3, v7);
    BeelineEdge e12 = new BeelineEdge(v4, v8);

    //用边确定面
    this.f1 = new SquarePlaneFace(e1, e2, e3, e4);
    this.f2 = new SquarePlaneFace(e5, e6, e7, e8);
    this.f3 = new SquarePlaneFace(e1, e10, e5, e9);
    this.f4 = new SquarePlaneFace(e2, e11, e6, e10);
    this.f5 = new SquarePlaneFace(e3, e12, e7, e11);
    this.f6 = new SquarePlaneFace(e4, e9, e8, e12);
    /*    SquarePlaneFace[] faces = {
            f1, f2, f3, f4, f5, f6
        };
     */
    //用面确定体
//   this.faces = faces;

    this.setVolume(this.getVolume());
    this.setSurface(this.getSurface());

  }

  //定义对于修改的计算。包括移动,缩放和旋转
  //将指定ID的任何体移动指定的距离
  public void tanslate(Vertice v) {
    this.f1.getlowBeeline().getStartVertice().translate(v); //v1
    this.f1.getrightBeeline().getStartVertice().translate(v); //v2
    this.f1.getupBeeline().getStartVertice().translate(v); //v3
    this.f1.getleftBeeline().getStartVertice().translate(v); //v4
    this.f2.getlowBeeline().getStartVertice().translate(v); //v5
    this.f2.getrightBeeline().getStartVertice().translate(v); //v6
    this.f2.getupBeeline().getStartVertice().translate(v); //v7
    this.f2.getleftBeeline().getStartVertice().translate(v); //v8
  }

  //将指定ID的任何体相对于x.y.z旋转一个角度其中,xyz是弧度的描述
  public void rotate(double x, double y, double z) {}

  //将指定的ID的任何体缩放一个指定的倍数
  public void scale(double times) {
    this.tanslate(this.f1.getrightBeeline().getOrigin().mirror());
    ProBag probag = new ProBag();
    probag.setLength(this.length * times);
    setPro(probag);
    this.tanslate(this.f1.getlowBeeline().getOrigin());
  };

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -