@smertelny
Начинающий программист на C++

Что за алгоритм/формула используется в сайте?

Есть такой сайт https://www.skrepkaq.ru/stronghold, он ищет "крепость" из игры minecraft

Нужно указать 2 координаты и угол куда смотрит игрок, но не могу узнать что за формула используется в этом сайте

Очень интересно, хотел сделать мини скрипт
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
pro100chel
@pro100chel
Python && PHP Developer
Все легко достается из js кода

const p = Math.PI/180;
function cot(x) { return 1 / Math.tan(x); }
    function getPortalCoords(x1, z1, a1, x2, z2, a2) {
        var a1 = parseFloat(a1),
            a2 = parseFloat(a2),
            x1 = parseInt(x1),
            z1 = parseInt(z1),
            x2 = parseInt(x2),
            z2 = parseInt(z2);
console.log(a1,a2,x1,z1,x2,z2);
if(Math.abs(a1 - a2) < 1) {alert("углы не могут быть равны!")}
		else if ((((a1 < 0) && (a2 > 0)) || ((a1 > 0) && (a2 < 0))) && (Math.abs(Math.abs(Math.abs(a1) - 180) - Math.abs(a2)) < 1)) {alert("углы не могут быть противоположны")}
		else{
			switch(Math.round(a1)) {
				case -180:
				case 0:
				case 180:
					document.getElementById('x-output').value = Math.round(x1);
					document.getElementById('z-output').value = Math.round(cot(-a2*p)*x1 - (x2*cot(-a2*p) - z2));
					break;
				case -90:
				case 90:
					document.getElementById('z-output').value = Math.round(z1);
					document.getElementById('x-output').value = Math.round(Math.round(x2*cot(-a2*p) - z2 + z1)/cot(-a2*p));
					break;
				default:
console.log(1);
					switch(Math.round(a2)){
						case -180:
						case 0:
						case 180:
							document.getElementById('x-output').value = Math.round(x2);
							document.getElementById('z-output').value = Math.round(cot(-a1*p)*x2 - (x1*cot(-a1*p) - z1));
							break;
						case -90:
						case 90:
							document.getElementById('z-output').value = Math.round(z2);
							document.getElementById('x-output').value = Math.round((x1*cot(-a1*p) - z1 + z2)/cot(-a1*p));
							break;
						default:
console.log(2);
							document.getElementById('x-output').value = Math.round(((x1*cot(-a1*p) - z1) - (x2*cot(-a2*p) - z2))/(cot(-a1*p) - cot(-a2*p)));
							document.getElementById('z-output').value = Math.round(cot(-a1*p)*document.getElementById('x-output').value-(x1*cot(-a1*p)-z1));
					}
			}
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы