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

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

Я могу получить демонстрационный код C#, который демонстрирует это?

27
задан Lance Roberts 24 May 2010 в 22:48
поделиться

3 ответа

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

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;
        }
    }
}
38
ответ дан 28 November 2019 в 05:21
поделиться

Сформировать перекрестный продукт векторов БА и БК. See http://mathworld.wolfram.com/CrossProduct.html.

4
ответ дан 28 November 2019 в 05:21
поделиться

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

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

.
1
ответ дан 28 November 2019 в 05:21
поделиться
Другие вопросы по тегам:

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