То, о чем вы просите, невозможно численно. Ошибки округления делают такой тест совершенно неуместным.
Тем не менее, вы можете проверить «если два треугольника находятся на одной плоскости, в пределах некоторого допуска». Это очень сложно сделать, и здесь тоже ошибки округления, вероятно, испортит любой метод. Действительно, всякий раз, когда треугольники тонкие, в плоскости, на которой они живут, возникает большая неуверенность.
Я мог бы указать вам на какой-то литер, если вы действительно хотите (лучше всего было бы посмотреть библиотеку CGAL и посмотреть, внесли ли они что-то, что связано с вашей проблемой). Все, скорее всего, связано с точными плавающими точками точности, умным переупорядочением операций и в любом случае приведет к неточным результатам.
Поэтому я настоятельно рекомендую вам найти другой подход к вашей реальной проблеме.
Ошибки округления являются (огромной) проблемой, если вы попытаетесь вычислить уравнение плоскости, проходящее через три точки, а затем проверив три других. Существует еще одно решение.
Возможно, вы захотите вычислить inertia matrix своих шести пунктов, диагонализировать его и посмотреть, находится ли его наименьшее собственное значение в пределах небольшого значения двух других. Это будет означать, что ваши шесть точек фактически лежат на одной плоскости, в пределах допуска.
Не могли бы вы кратко объяснить эффект рендеринга, который вы пытаетесь достичь? – tibur
Любые треугольники на одной плоскости будут отображаться как одна плоская заливка, поэтому я буду вычислять, какие треугольники могут объединиться в многоугольники (один раз), а затем сделать их рисованием одной формы (для каждого рендера). –