Подтвердить что ты не робот

Учитывая 3 pts, как я могу рассчитать нормальный вектор?

С учетом трех трехмерных точек (A, B и C), как я могу вычислить нормальный вектор? Три точки определяют плоскость, и я хочу, чтобы вектор перпендикулярен этой плоскости.

Могу ли я получить образец кода С#, который демонстрирует это?

4b9b3361

Ответ 1

Это зависит от порядка точек. Если точки указаны в порядке против часовой стрелки, как видно из направления против нормального, то легко вычислить:

Dir = (B - A) x (C - A)
Norm = Dir / len(Dir)

где x - поперечное произведение.

Если вы используете OpenTK или XNA (имеете доступ к классу Vector3), то это просто вопрос:

class Triangle {
    Vector3 a, b, c;
    public Vector3 Normal {
        get {
            var dir = Vector3.Cross(b - a, c - a);
            var norm = Vector3.Normalize(dir);
            return norm;
        }
    }
}

Ответ 3

Вам нужно вычислить cross product любых двух непараллельных векторов на поверхности. Поскольку у вас есть три очка, вы можете понять это, взяв кросс-произведение, скажем, векторов AB и AC.

Когда вы это сделаете, вы вычисляете нормальный уровень поверхности, из которых Wikipedia имеет довольно обширное объяснение.