Здраствуйте уважаемые форумчане. Запиливаю небольшой 3d редактор RiFLe(во вложении версия на текущий момент, скриншот) для удобства создания low-poly моделей типа рельефных надписей, стен с оконными и дверными проёмами, хотя можно сделать модель и посложнее.
Сделал автоматическое рисование треугольников(триангуляция Делоне), но вот никак не могу найти решение для простой на первый взгляд задачи - найти центр описанной около треугольника окружности в координатной форме.
СУТЬ ПРОБЛЕМЫ
В триангуляции использован исходник для нахождения координат центра описанной окружности, который, как оказалось, с ошибкой. Из-за этого треугольники не рисуются в случае, подобном примеру Example_with_Error.
Есть статья на википедии
http://ru.wikipedia.org/wiki/Описанная_окружность
но там в векторной форме и непонятно как использовать эти два числа в скобке через запятую (перемножить или что?)
Буду очень рад, если кот-нибудь подскажет как эти уравнения расписать подробно в координатной форме( чтоб запрогать их)
Вот старый исходник, который счас в редакторе.

Function InCircle(xp#, yp#, x1#, y1#, x2#, y2#, x3#, y3#, xc#, yc#, r#)
Local eps#
Local m1#
Local m2#
Local mx1#
Local mx2#
Local my1#
Local my2#
Local dx#
Local dy#
Local rsqr#
Local drsqr#
eps# = 0.000001
Result = False
If Abs(y1 - y2) < eps And Abs(y2 - y3) < eps Then
Return True
EndIf
If Abs(y2# - y1#) < eps# Then
m2# = -(x3# - x2#) / (y3# - y2#)
mx2# = (x2# + x3#) / 2
my2# = (y2# + y3#) / 2
xc# = (x2# + x1#) / 2
yc# = m2# * (xc# - mx2#) + my2#
ElseIf Abs(y3# - y2#) < eps# Then
m1# = -(x2# - x1#) / (y2# - y1#)
mx1# = (x1# + x2#) / 2
my1# = (y1# + y2#) / 2
xc# = (x3# + x2#) / 2
yc# = m1# * (xc# - mx1#) + my1#
Else
m1# = -(x2# - x1#) / (y2# - y1#)
m2# = -(x3# - x2#) / (y3# - y2#)
mx1# = (x1# + x2#) / 2
mx2# = (x2# + x3#) / 2
my1# = (y1# + y2#) / 2
my2# = (y2 + y3#) / 2
xc# = (m1# * mx1# - m2# * mx2# + my2# - my1#) / (m1# - m2#)
yc# = m1# * (xc# - mx1#) + my1#
EndIf
dx# = x2# - xc#
dy# = y2# - yc#
rsqr#= dx# * dx + dy * dy#
;r = Sqr(rsqr)
dx# = xp# - xc#
dy# = yp# - yc#
drsqr = dx# * dx# + dy#* dy#
If drsqr# <= rsqr# Then Result = True
Return Result
End Function
Спасибо