Название: Двумерные координаты на трехмерной плоскости Отправлено: Racheengel от Апрель 11, 2016, 15:37 Всем привет,
каким образом можно получить двумерные координаты точек, принадлежащие плоскости в трехмерном пространстве? Задача такая: есть точка в 3д-пространстве и нормаль к ней, соответственно есть уравнение плоскости в пространстве. И есть другие точки, лежащие в пределах данной плоскости. Они также имеют 3д-координаты. Вопрос в следующем: как получить для этих точек их двумерные координаты на плоскости? Т.е. грубо говоря лежащая на плоскости точка A(x,y,z) должна стать A'(x',y') и т.д. Центр координат на плоскости заранее неизвестен. Можно ли его определить, зная, что для некоторых точек есть численное соответствие между 3д и 2д координатами? Название: Re: Двумерные координаты на трехмерной плоскости Отправлено: ssoft от Апрель 11, 2016, 15:46 Здесь недостаточно условий.
Точка и нормаль определяют плоскость. Наверное эта точка является началом координат системы x',y' (или нет?). Куда направлены сами оси x' и y' ? Нужно как минимум центр, два вектора и условия для системы координат (правосторонняя/левосторонняя, прямоугольная декартова). Название: Re: Двумерные координаты на трехмерной плоскости Отправлено: Racheengel от Апрель 11, 2016, 16:43 Трехмерная система координат: стандартная прямоугольная, x направлена вглубь, y перпендикулярно, z вверх.
Двухмерная система координат: тоже прямоугольная, х - направлена вправо, y - вверх. x',y' - это просто точка на плоскости, не обязательно начало координат. В этом и проблема, что начало координат на плоскости - неизвестно. Есть только несколько точек xyz, которым соответствуют x',y' на плоскости. Можно ли каким-то образом на основе этой информации найти общее решение для любой точки xyz? Т.е. получить ее x',y' на плоскости? Название: Re: Двумерные координаты на трехмерной плоскости Отправлено: ssoft от Апрель 11, 2016, 17:04 Достаточно иметь три точки, не лежащие на одной прямой, чтобы построить матрицу преобразований из системы координат 1 в систему координат 2.
p * A = p' p - координаты {x,y,z}, A - искомая матрица Aij, p1 - координаты {x', y', 0} x * A00 + y * A10 + z * A20 = x' x * A01 + y * A11 + z * A21 = y' x * A02 + y * A12 + z * A22 = 0 Девять линейных уравнений, девять неизвестных Aij. Название: Re: Двумерные координаты на трехмерной плоскости Отправлено: Racheengel от Апрель 11, 2016, 17:27 Ок, спасибо, похоже на то, что нужно :)
Подскажете еще, чем можно было бы найти эти неизвестные? GSL, например? Понимаю, что есть гугл, но честно говоря, не знаю, как точнее вопрос сформулировать... Название: Re: Двумерные координаты на трехмерной плоскости Отправлено: Igors от Апрель 11, 2016, 18:07 Код Инвертировав ее получите матрицу "из мира в локальную". Если ее применить к исходной точке - должно получиться (0, 0, 0). Если применить к точке(ам) лежащим в заданной плоскости - их локальные Z должны стать нулевыми. Если не лежат - то и Z будет ненулевое. Это пока все что можно выжать из сказанного Вами Примечание: никогда не пользовался Qt матрицами, верю написанному в доке (row-major) |