1

Тема: Знаходження зовнішніх нормалей для граней октаедра

Усім привіт.
Роблю задачу усунення невидимих граней для проекції октаедра.
Так от для алгоритму мені потрібно знайти нормалі для кожної грані.
Питання як знайти їх, якщо я маю координати вершин октаедра.

struct OctaVertex {
    float x, y, z;
};

2

Re: Знаходження зовнішніх нормалей для граней октаедра

Наскільки я знаю: потрібно рахувати 3 визначники, які і будуть координатами нормалі.
Перша координата це визначник складений з координат т. А(y, z) та т. B(y, z) і т. д.

Але чи правильно я думаю, підкажіть, будь ласка.

3

Re: Знаходження зовнішніх нормалей для граней октаедра

Розв'язок повністю на шкільній математиці: нормаль є перпендикуляром до площини, отже, і до будь-якого вектора на цій площині. Два (неколініарні) вектори визначають площину, отже, нам достатньо, щоб наш вектор N був перпендинулярний до, скажімо, AB і AC. Визначимо перпендикулярність з скалярного добутку. Якщо A(x1,y1,z1), B(x2,y2,z2) і C(x3,y3,z3), то маємо систему

(x2-x1)x+(y2-y1)y+(z2-z1)z=0
(x3-x1)x+(y3-y1)y+(z3-z1)z=0

яка визначає нормаль. Тепер елементарними перетвореннями ви можете отримати будь-який потрібний вам результат: нормальний орт, нормальний вектор, що проходить крізь центр грані і т.д.

Подякували: Proh8530, 0x9111A2