To znowu ja. Pisze w osobnym komentarzu żeby pytanie skoczyło do góry i żeby ewentualnie ktoś zweryfikował tok myślenia.
Oto jak wyliczyć punkty przecięcia płaszczyzny z sześcianem, które wykorzystasz do policzenia pola zgodnie z rozumowaniem w pierwszym komentarzu:
https://imgur.com/a/toMy6Tx
Generalnie cały proces bardzo dobrze powinien się algorytmizować, bo w programie streści się to do jednego bardzo dużego wzoru na parametr t.
Więc moja propozycja jest ostatecznie taka:
1. Wyznacz pary punktów, które są wierzchołkami krawędzi. Mój pomysł na szybko to wybrać pierwszego lepszego i policzyć odległości od niego do całej reszty. Te dla których odległość wyjdzie najmniejsza tworzą krawędzie, będzie ich 3. Kolejna trójka równooodległych ale dalszych niż pierwsza to będą te z których trzeba powtórzyć proces żeby znaleźć znaleźć wszystkie krawędzie. Czyli dostajesz wszystkie 12 krawędzi. Jak to zaprojektujesz w programie to już Twoja sprawa, ja bym to pisał obiektowo :P.
2. Dla każdej pary punktów będących krawędzią lecimy rozumowanie wrzucone w linku. W programie najlepiej zrób sobie 2 funkcje - jedna liczy licznik tego wzoru druga mianownik. Sprawdzasz czy licznik i mianownik różne od 0. Jeśli tak to dla danego t wyznaczasz x,y,z ze wzorów parametrycznych (x = x0 + t*a, y = y1 + t*b...). Oczywiście weryfikujesz czy ten punkt leży pomiędzy wierzchołkami krawędzi, bo on może wyjść gdzieś daleko poza sześcianem. Jeśli obydwa licznik i mianownik rowne 0 to prosta leży na płaszczyźnie, wtedy punkty przecięcia potrzebne do kolejnego kroku to po prostu wierzchołki krawędzi. Jeśli jeden sie wyzeruje a drugi nie to płaszczyzna nigdy nie przecina prostej, nie mamy punktów przecięcia.
3. Wyznaczone punkty przecięcia wykorzystujemy we wzorze z 1. komentarza. Zaimplementuj wszystkie te operacje wektorowe, iloczyn skalarny i wektorowy i wuala masz analitycznie dokładne pole powierzchni :P (niestety z niedokładnościami wynikającymi z używania liczb zmiennoprzecinkowych, ale tego nigdy nie unikniesz).
Zakodziłbym sobie to dla zabawy, ale musze pisać inny projekt. Jak bd miał czas to napisze i sie odezwe :P Generalnie to powinno zadziałać, ale pewności nie ma dopóki to nie zadziała :P