Определите копланарные (или коллинеарные) точки в более высоких измерениях с Java

1

В Java, каков наилучший способ определить, находится ли точка (из которой у меня много), заданная в 6 измерениях, в той же плоскости, что и другие точки в 6-мерном пространстве? Это ясно, как это сделать в 2D и 3D, но насколько я знаю, некоторые из таких понятий, как кросс-продукт и т.д., Не обобщаются на более высокие размеры (или только на некоторые немногие).

Было бы также полезно найти способ ответить на один и тот же вопрос для точек на линиях в 6D. Более общий, я дал облако более высокой размерной точки, и я хочу определить, находятся ли некоторые из этих точек в одной плоскости.

  • 0
    Что вы подразумеваете под «плоскостью» в 6-мерном пространстве? Когда мы говорим «плоскость» в трехмерном пространстве, мы говорим о двумерном линейном подпространстве, которое также оказывается (3-1) D линейным подпространством. Итак, когда вы говорите «плоскость» в шести измерениях, вы говорите о двумерном подпространстве? или вы говорите о (6-1) D подпространстве (иначе, «гиперплоскость»)?
  • 0
    @jameslarge В рамках этого конкретного вопроса я имел в виду двумерное линейное подпространство. Но мне было бы одинаково интересно ответить на вопрос о любой из возможных гиперплоскостей в этом 6-мерном случае.
Показать ещё 3 комментария
Теги:
vector
geometry

2 ответа

2
Лучший ответ

В N-мерном пространстве точка лежит в той же гиперплоскости, что и N (невырожденная), если объем симплекса, образованный всеми этими (N + 1) точками, равен нулю. Объем симплексов можно было вычислить через определитель

          |1 x1 y1 z1 ...|
          |1 x2 y2 z2 ...|
V = 1/N! |1 x3 y3 z3 ...|
          |1 x4 y4 z4 ...|
          |..............| 

Обратите внимание, что эта формула соответствует проверке взаимного продукта на коллинеарность в 2D-случае, на смешанную проверку продукта для копланарности в 3D-случае и т.д.

  • 0
    Отлично, это имеет смысл. Что касается самого вычисления определителя, означает ли это, что я просто строю квадратную матрицу из точек, которые я хотел бы проверить, чтобы каждая строка представляла одну точку и добавляла первый столбец «1»?
  • 0
    Да ты прав. И вам не нужно 1/N! срок проверки компланарности.
Показать ещё 2 комментария
1

Классическое уравнение на линии, независимо от размеров, таково:

x/const1 + y/const2 + ... + z/const3 = CONST0

На 2 пункта вы всегда можете найти это уравнение:

(x - x1) / (x1 - x2) + (y - y1) / (y1 - y2) + ... + (z - z1) / (z1 - z2) = 0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню