Java 如何在不使用固定数字的情况下返回2D形状对象的x位置?

Java 如何在不使用固定数字的情况下返回2D形状对象的x位置?,java,Java,我有一个2D火箭,火箭由三个物体组成,一个鼻子(三角形),一个身体(正方形)和一个喷射器(圆形),它们一起组成火箭 我必须设置身体(正方形)相对于鼻子(三角形),以便它们彼此对齐 到目前为止,我有这个 public Rocket(Triangle t, Square s, Circle c) { this.nose = t; this.body = s; this.jet = c; this.nose.setXPos(50);//initial positions of

我有一个2D火箭,火箭由三个物体组成,一个鼻子(三角形),一个身体(正方形)和一个喷射器(圆形),它们一起组成火箭

我必须设置身体(正方形)相对于鼻子(三角形),以便它们彼此对齐

到目前为止,我有这个

public Rocket(Triangle t, Square s, Circle c) {
  this.nose = t;
  this.body = s; 
  this.jet = c;    
  this.nose.setXPos(50);//initial positions of the nose X
  this.nose.setYPos(300);//initial positions of the nose Y
  this.body.setXPos(getBodyXPos());//sets the body relative to the nose X
  this.body.setYPos(getBodyYPos());//sets the body relative to the nose Y
我也有办法,

private int getBodyXPos()
   {   
   return this.xPos;
}

private int getBodyYPos()
{
  return this.yPos;
}

private int getJetXPos()
{
   return this.xPos;
}

private int getJetYPos()
{
  return this.yPos;
}
我不想使用固定数字,但需要以某种方式使用helper方法,使形状显示在屏幕上的正确位置。
我已经被困在这几天了,希望能得到一些帮助。非常感谢。

您只需使用适当的偏移量设置各个零件的相对位置即可

int rocketx = 50;
int rockety = 300;
this.nose.setXPos(rocketx);
this.nose.setYPos(rockeyy);
this.body.setXPos(rocketx);
this.body.setYPos(rockety+this.nose.height()); 
this.jet.setXPos(rocketx);
this.jet.setYPos(rockety+this.nose.height()+this.body.height()); 

代替固定的高度值,您可以在鼻子和身体上使用一种方法来确定它们的高度,并使用该方法。如果您的火箭水平飞行,那么您将需要对X而不是Y执行相同的操作。

似乎您需要首先定义如何绘制形状。然后,不清楚你有什么类型的三角形:等边三角形、等腰三角形或不等边三角形;三角形的哪个点用xPos,yPos来表示-任何顶点,一些特定的顶点,重心,中心点等等。所以一般来说,这要由你来做更多关于几何学的功课。三角形,正方形和圆形物体中有一些方法,比如长度和宽度,但我无法确定在火箭目标代码中使用哪一个以及如何使用它们。我试过的每件事要么没有遵守,要么没有把正方形和圆圈移动到它需要的地方。拿一张图表纸。标记适当缩放的尺寸,绘制三角形,然后标记所有不同的测量值,如高度和宽度。绘制其他形状并标记它们。你仍然没有弄清楚你想要它是水平的还是垂直的,但是要弄清楚。然后查看添加哪些值作为对象的位置。计算只是加法,您只需要找到正确的东西来添加。this.getHeight for Triangle、this.getLength for square和this.getDiameter for circle的子类Triangle、square和circle中有一些方法,不幸的是,我无法将它们写入rocket的代码中。