📄 squareplanesolid.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 + -