- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
По идее, единственное что там похоже с тем что мне надо - это вот это.http://www.java-gaming.org/index.php?topic=27326.0
Попробуй, не читал.
public class Vector {
public float x;
public float y;
public Vector() {
x = 0.0f;
y = 0.0f;
}
// returns the (squared) distance between this Vector and another
public float distSQ(final Vector vec) {
float distX = x - vec.x;
float distY = y - vec.y;
return distX * distX + distY * distY;
}

Вот я про такое тоже подумал, но если регион будет например мильйон блоков? Это же хана серверу..Ну можно сделать мега костыль. Получать все блоки в регионе и сравнивать с блоками с другим регионом.
Пользовался. Поисковал чето типо такого: Bukkit check is region cross with other regionПользуйся поиском.
Гуглить не умеешь.Вот я про такое тоже подумал, но если регион будет например мильйон блоков? Это же хана серверу..
Пользовался. Поисковал чето типо такого: Bukkit check is region cross with other region
Ничего годного...
Поехавший.Ну можно сделать мега костыль. Получать все блоки в регионе и сравнивать с блоками с другим регионом.
Хотя не, не то, это расстояние между локациями можно вычеслить..По идее, единственное что там похоже с тем что мне надо - это вот это.
Хотя мне чего-то не верится что это именно то...Код:public class Vector { public float x; public float y; public Vector() { x = 0.0f; y = 0.0f; } // returns the (squared) distance between this Vector and another public float distSQ(final Vector vec) { float distX = x - vec.x; float distY = y - vec.y; return distX * distX + distY * distY; }
Я думал у кого-то есть ченить вырезанное из WG
Там же как-то проверяется при привате, есть ли регионы в нем..
Хотя не, не то, это расстояние между локациями можно вычеслить..
public static boolean testAABBAABB(final AABB box1, final AABB box2) {
if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
return true;
}
public class AABB {
public Vector center;
public float r[];
public AABB(final float width, final float height) {
center = new Vector();
r = new float[2];
r[0] = width * 0.5f;
r[1] = height * 0.5f;
}
public void update(final Vector position) {
center.x = position.x;
center.y = position.y;
}
}
public class Vector {
public float x;
public float y;
public Vector() {
x = 0.0f;
y = 0.0f;
}
// returns the (squared) distance between this Vector and another
public float distSQ(final Vector vec) {
float distX = x - vec.x;
float distY = y - vec.y;
return distX * distX + distY * distY;
}
}
Vector полагаю можно не делать? Ведь это тот-же Location только без z..Java:public static boolean testAABBAABB(final AABB box1, final AABB box2) { if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false; if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false; if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false; return true; }
Java:public class AABB { public Vector center; public float r[]; public AABB(final float width, final float height) { center = new Vector(); r = new float[2]; r[0] = width * 0.5f; r[1] = height * 0.5f; } public void update(final Vector position) { center.x = position.x; center.y = position.y; } }
Java:public class Vector { public float x; public float y; public Vector() { x = 0.0f; y = 0.0f; } // returns the (squared) distance between this Vector and another public float distSQ(final Vector vec) { float distX = x - vec.x; float distY = y - vec.y; return distX * distX + distY * distY; } }
Не забудь добавить Z везде.
В этом разделе поднималась такая тема в этом году.Пользовался. Поисковал чето типо такого: Bukkit check is region cross with other region
Ничего годного...
А ответ там был (какой-то полегче чем с этим AABB)?В этом разделе поднималась такая тема в этом году.
Не помню, увы.А ответ там был (какой-то полегче чем с этим AABB)?
Там же самый 1 блок для детекта коллизий в 3d.Тоже интересно, с 2D все понятно, а с 3d как?
return distX * distX + distY * distY + distZ * distZ; Так?
if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
Ну я все правильно добавил?
Java:public class AABB { public Vector center; public float r[]; public AABB(final float width, final float height) { center = new Vector(); r = new float[2]; r[0] = width * 0.5f; r[1] = height * 0.5f; r[2] = height * 0.5f; } public void update(final Vector position) { center.x = position.x; center.y = position.y; center.z = position.z; } }
Java:package Exemple; public class Vector { public float x; public float y; public float z; public Vector() { x = 0.0f; y = 0.0f; z = 0.0f; } public float distSQ(final Vector vec) { float distX = x - vec.x; float distY = y - vec.y; float distZ = z - vec.z; return distX * distX + distY * distY + distZ * distZ; } }
Java:public static boolean testAABBAABB(final AABB box1, final AABB box2) { if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false; if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false; if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false; return true; }
public AABB(final float width, final float height, final float depth) {
center = new Vector();
r = new float[3];
r[0] = width * 0.5f;
r[1] = height * 0.5f;
r[2] = depth* 0.5f;
}
Сяпки.
А последний этап? 2 региона то как проверяется? Здесь только мин макс одного региона.
public static boolean testAABBAABB(final AABB box1, final AABB box2) {
if (Math.abs(box1.center.x - box2.center.x) > (box1.r[0] + box2.r[0])) return false;
if (Math.abs(box1.center.y - box2.center.y) > (box1.r[1] + box2.r[1])) return false;
if (Math.abs(box1.center.z - box2.center.z) > (box1.r[2] + box2.r[2])) return false;
return true;
}
Боже, серьёзно? Я показал, как это можно сделать, это всего лишь алгоритм.А как Location преоброзовать в AABB то?..
Но я конечно до сих пор надеюсь на более легкий способ..