Я изначально написал программу, которая генерирует область 2D прямоугольников. Вдруг я хотел устроить изометрическую проекцию. Я думал, что самый простой способ сделать это - использовать 3D-прямоугольники. Я адаптировал код и в целом все получилось так, как я хотел. Однако возникла проблема, которую я не знаю, как решить. Каждый новый прямоугольник располагается как бы поверх остальных. Из-за чего появляется эффект рельефа местности. Я бы хотел, чтобы платформа была плоской. Ниже на экране вы все поймете.
Я попытался поэкспериментировать с setTranslateZ (), но это никак не отразилось.
protected List fillingArea()
{
manyPlacedSquares.add(new CustomBox(100,50,100, 0, 0, 0));
for(int y = 0; y < numberOfSquares; y++)
{
for(CustomBox i: manyPlacedSquares)
{
CustomBox upBox = new CustomBox(100,50,100,i.getTranslateX()+70,i.getTranslateY()-50, i.getTranslateZ()-1 );
manyPotentialSquares.add(upBox);
CustomBox rightBox = new CustomBox(100,50,100,i.getTranslateX()-70,i.getTranslateY()-50,i.getTranslateZ()-1);
manyPotentialSquares.add(rightBox);
CustomBox belowBox = new CustomBox(100,50,100,i.getTranslateX()+70,i.getTranslateY()+50,i.getTranslateZ()-1);
manyPotentialSquares.add(belowBox);
CustomBox leftBox = new CustomBox(100,50,100,i.getTranslateX()-70,i.getTranslateY()+50,i.getTranslateZ()-1);
manyPotentialSquares.add(leftBox);
}
System.out.println(manyPotentialSquares.size());
System.out.println(manyPlacedSquares.size());
System.out.println(manyPotentialSquares.get(1).getTranslateX());
manyPotentialSquares.removeAll(manyPlacedSquares);
System.out.println(manyPotentialSquares.size());
index = randomGenerator.nextInt(manyPotentialSquares.size());
manyPlacedSquares.add(manyPotentialSquares.get(index));
}
return manyPlacedSquares;
}
Пользовательское поле имеет простой контент и вряд ли понадобится, но на всякий случай я покажу его содержимое. Метод equals () переопределен для корректной работы removeall ()
public class CustomBox extends Box {
Double tt;
Double tt1;
public CustomBox(double width, double height, double depth, double gtx, double gty, double gtz)
{
super(width, height, depth);
this.setTranslateX(gtx);
this.setTranslateY(gty);
this.setTranslateZ(gtz);
tt = gtx;
tt1 = gty;
}
@Override
public boolean equals(Object obj)
{
if(this.tt.equals(((CustomBox) obj).getTranslateX()) && this.tt1.equals(((CustomBox) obj).getTranslateY()))
{
System.out.println(tt + " " + ((CustomBox) obj).getTranslateX());
return true;
}
if (obj == null || obj.getClass() != this.getClass())
{
return false;
}
return false;
}
}