- Katılım
- 5 Mart 2014
- Mesajlar
- 5.701
- Makaleler
- 12
- Çözümler
- 44
Java:
public Boolean IsCompletelyInside(Claim OtherClaim) {
return this.Pos1.PosX >= OtherClaim.Pos1.PosX &&
this.Pos2.PosX <= OtherClaim.Pos2.PosX &&
this.Pos1.PosY >= OtherClaim.Pos1.PosY &&
this.Pos2.PosY <= OtherClaim.Pos2.PosY &&
this.Pos1.PosZ >= OtherClaim.Pos1.PosZ &&
this.Pos2.PosZ <= OtherClaim.Pos2.PosZ;
}
Bu kod bir nesnenin diğer nesne ile çakışıp çakışmadığını belirtiyor. 2 boyutlu ortamda güzel çalışıyor ama işin içine 3. boyut girince karmaşıklaşıyor.
Ben bu kodu şöyle güncellemek istiyorum. X, Y ve Z dahil bir nesne oluşturulduğunda diğer nesne ile karşılaştırma yapılacak. Eğer yeni nesne, karşılaştırma yapılan nesnenin tamamen içinde yer alıyorsa true döndürecek. Denedim fakat düzgün çalışmıyor. Nerede hata yapıyor olabilirim?
Problemi bu kodla çözdüm. Bu sayede 3 boyutlu ortamda bir nesnenin bir nesne içerisinde olduğunu anlayabiliyoruz. Eğer true döndürürse nesne, diğer nesnenin içinde demek.
Java:
public Boolean IsCompletelyInside(Claim OtherClaim)
{
int xMin = Math.min(OtherClaim.Pos1.PosX, OtherClaim.Pos2.PosX);
int xMax = Math.max(OtherClaim.Pos1.PosX, OtherClaim.Pos2.PosX);
int yMin = Math.min(OtherClaim.Pos1.PosY, OtherClaim.Pos2.PosY);
int yMax = Math.max(OtherClaim.Pos1.PosY, OtherClaim.Pos2.PosY);
int zMin = Math.min(OtherClaim.Pos1.PosZ, OtherClaim.Pos2.PosZ);
int zMax = Math.max(OtherClaim.Pos1.PosZ, OtherClaim.Pos2.PosZ);
return xMax >= this.Pos1.PosX
&& this.Pos1.PosX >= xMin
&& yMax >= this.Pos1.PosY
&& this.Pos1.PosY >= yMin
&& zMax >= this.Pos1.PosZ
&& this.Pos1.PosZ >= zMin
&& xMax >= this.Pos2.PosX
&& this.Pos2.PosX >= xMin
&& yMax >= this.Pos2.PosY
&& this.Pos2.PosY >= yMin
&& zMax >= this.Pos2.PosZ
&& this.Pos2.PosZ >= zMin;
}
Son düzenleme: