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

📄 cuboidplanesolid.java

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

import java.util.*;
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 CuboidPlaneSolid
    extends PlaneSolid {

  public double length;
  public double width;
  public double high;
  public SquarePlaneFace f1, f2, f3, f4, f5, f6;
  public String name;

  //public double volume,surface;
  public CuboidPlaneSolid() {
    this.length = 0;
    this.width = 0;
    this.high = 0;
  }

  //实现对于体积的计算
  public double getVolume() {
    return this.length * this.width * this.high;
  }

  public String getName() {
    return this.name;
  }

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

  public void setName(String name) {
    this.name = name;

  }

  //定义属性设置的统一的接口
  public void setPro(ProBag proBag) {

    double lenth = proBag.getLength();
    double width = proBag.getWidth();
    double high = proBag.getHigh();

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

    this.length = proBag.getLength();
    this.width = proBag.getWidth();
    this.high = proBag.getHigh();
    this.setVolume(this.getVolume());
    this.setSurface(this.getSurface());

  }

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

  public double getWidth() {
    return this.width;
  }

  public double getHigh() {
    return this.high;
  }

  //获得这个长方体的属性包
  public ProBag getPro() {
    ProBag probag = new ProBag();
    probag.setLength(getLength());
    probag.setWidth(getWidth());
    probag.setHigh(getHigh());
    return probag;
  }

  public void init(ProBag proBag) {

    // System.out.print(proBag.getHigh());

    //用传入的参数求出点的位置
    this.length = proBag.getLength();
    this.width = proBag.getWidth();
    this.high = proBag.getHigh();

    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(Vertice v) {};

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

}

⌨️ 快捷键说明

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