@lundoger

Как получить координаты точки, зная координаты других 3-х, и расстояние между ними?

Вам необходимо найти некоторую неизвестную точку в трехмерном пространстве, за
наименьшее количество попыток, используя только функцию, которая может вернуть расстояние от
двух точек.

Для решения задачи сначала реализуйте функцию f, которая, принимая координаты двух любых
точек с координатами (x, y, z) которые могут быть любым целым числом от 0 до 100, и возвращает расстояние между ними

Например, для произвольно сгенерированной точки a(10, 6, 19) и переданной в функцию точки
b(10, 6, 9), результат работы функции будет следующим: f(a, b) = 10
Далее имплементируйте сам алгоритм для задания. Алгоритм должен находить координаты
произвольно сгенерированной точки при наименьшем количестве вызовов функции f.

Я читал про триангуляцию по 4 точкам, про решение системы уровнений, про поиск растояния между точками по функции (x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2 = d^2, это я в функцию добавил, но что мне с решениями этих уровнений я немогу понять, помогите...

const MAX_NUMBER = 100
const MIN_NUMBER = 0
let probes = []

export const getRandomNumber = (min, max) => {
	return Math.floor(Math.random() * (max - min + 1)) + min;
};

export const getRandomCoordinates = () => {
	return {
		x: getRandomNumber(MIN_NUMBER, MAX_NUMBER),
		y: getRandomNumber(MIN_NUMBER, MAX_NUMBER),
		z: getRandomNumber(MIN_NUMBER, MAX_NUMBER),
	}
};

export const createAsteroid = () => {
	return getRandomCoordinates()
};

export const getDistanceBetweenPoints = (point1, point2) => {
	const { x: x1, y: y1, z: z1 } = point1;
	const { x: x2, y: y2, z: z2 } = point2;

	const distance = Math.sqrt(
		Math.pow(x2 - x1, 2) +
		Math.pow(y2 - y1, 2) +
		Math.pow(z2 - z1, 2)
	);

	return distance;
}

const addProbeAndGetDistance = (probe, asteroid) => {
	probes.push(probe)
	return getDistanceBetweenPoints(probe, asteroid)
}

export const findAsteroidLocation = () => {
	const asteroid = createAsteroid()

	const d1 = addProbeAndGetDistance({ x: 0, y: 0, z: 0 }, asteroid)
	const d2 = addProbeAndGetDistance({ x: 0, y: 0, z: 1 }, asteroid)
	const d3 = addProbeAndGetDistance({ x: 0, y: 1, z: 0 }, asteroid)
	const d4 = addProbeAndGetDistance({ x: 1, y: 0, z: 0 }, asteroid)
}
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Первую тестовую точку берём (0, 0, 0)
Получаем расстояние d0
[1] (x - 0)2 + (y - 0)2 + (z - 0)2 = x2 + y2 + z2 = d02
Возьмём вторую точку (1, 0, 0)
Получаем расстояние d1
[2] (x - 1)2 + (y - 0)2 + (z - 0)2 = x2 - 2x + 1 + y2 + z2 = d12
2x - 1 = d02 - d12
x = (d02 - d12 + 1) / 2
Аналогично, по точкам (0, 1, 0) и (0, 0, 1) получаем координаты y и z.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы