книги / Основы САПР. CAD CAM CAE
.pdfГлава 7
Представление поверхностей
и работа с ними
Системам геометрического моделирования приходится хранить уравнения кривых
(или эквивалентные характеристические параметры) для всех ребер и уравнения
поверхностей (или эквивалентные параметры) для всех граней. Полезно знать, какими бывают уравнения поверхностей и какими параметрами они характери
зуются. Мы говорили, что для реализации булевских операций необходимо рас
считывать точки пересечения кривых. В системах поверхностного моделирова
ния с той же целью приходится определять кривые, по которым пересекаются
поверхности. Например, если поверхность в процессе моделирования отсеi<ается
другой поверхностью, это требует вычисления кривой, по которой они пересека ются. Эта задача требует вычисления координат точек на поверхностях, а также
производных в этих точках. В настоящей главе мы коротко рассмотрим различ
ные типы уравнений поверхностей и методы работьr с ними: методы вычисления
координат, дифференцирования и обработки пересечений. Все эти вопросы рас
сматриuаются более подробно в книгах по вычислительной геометрии [9, 49, 48,
129, 72, 112].
7.1. Типы уравнений поверхностей
Уравнения поверхностей, как и уравнения криuых, делятся на два основных типа. К первому типу относятся параметрические уравиеиия, связывающие значения
координат х, у и z со значениями параметра. Ко второму относятся иепарамет
рические уравиеиия, связывающие координаты х, у .и z непосредственно друг с
другом какой-либо функцией. Поясним эти определения на простом примере.
Рассмотрим сферу радиуса R с центром в начале координат. Параметрическое
уравнение этой сферы будет иметь вид:
P(u,v) = Rcosu cosv i + Rsinи cosv j + Rsinv k;
(7.1)
(О~ и ~ 2n, -л 1 2 ~ v ~ 1t 1 2),
х2 +у2 +zz -R2 =0 |
(7.2) |
где параметр и может рассматриваться как долгота, а v - |
(7.3) |
как широта. |
|
Ту же сферу можно описать и без параметров и и v: |
|
или
7.2. Билинейная поверхность |
203 |
Уравнение (7.2) называется иеявиы.м иепараметрuческим, а уравнение (7.3) -
явным иепараметрическим.
У каждого типа уравнений есть свои преимущества и недостатки, но мы бу
дем рассматривать только параметрические уравнения. Как отмечалось в гла
ве 6, параметрическое уравнение позволяет эффективно вычислять точки на
поверхности или кривой, отстоящие друг от друга на небольшие расстояния, что облегчает интерактивное отображение объекта и работу с ним. Это одна
из главных причин, по которым параметрические уравнения используются
для представления поверхностей в большинстве систем автоматизированного
проектирования1•
7.2. Билинеймая поверхность
Билиuейиая поверхиостъ (Ьilinear sшface) строится по четырем заданным точкам
и описывается линейными уравнениями с параметрами и и v. Эти точки ока
зьшаются в углах построенной поверхности. Мы обозначим их буквами Р0,о, Р1,0, Р0.1, Рц (рис. 7.1). Вывести уравнение билинейной поверхности - это значит
найти выражение для координат произвольной точки по значениям параметров
и и v. Предположим, что эта точка делит отрезок [Р0,,,,Р1,.,] в отношении и:(1 -и) (рис. 7.1). Точки Р0,,, и P1.v делят отрезки Р0.0Р0.1 и Р1.0Р1.1 соответственно в отно
шении v:(1 - v). Определенная таким образом точка Р(и,r1) будет перемешаться
по всей поверхности при изменении параметров и и v от О до 1. С учетом сделан ных предположений координаты точек Р0.,, и Р,,,, запишутся следующим образом:
Po.v = (1-v)Po.u + vP0. 1 ; |
(7.4) |
P1.v = (1-v)P1.0 + vP1•1 • |
(7.5) |
Рц
--------п
1- v
и
v
v~~----
Poo __.
. и
Рис. 7. 1. Билинейная поверхность и ее опорные точки
1 Кривые, по которым пересекаются поверхности, в некоторых случаях бывает удобно рас
считьшать, представляя о;щу из этих поверхностей параметрическим уравнением, а дру
гую - непараметрическим. Поэтому в некоторых снетемах могут использовап.ся и
непараметрические уравнешtя поверхностей, хотя и не как основноlt тип уравнений для
хранения сведений о кривых. В этом случае возникает потребность в 11роцедуре преобра
зования из параметрической формы в непараметричсскую и обратно. Такое преобразова ние рассматривается в работе [69].
204 |
Глава 7. Представление поверхностей и работа с ними |
||
|
|
|
|
Аналогичным образом получаются координаты точки Р(и,v): |
|
Р(и,v)=(1-и)Р0,v +иР1,,,. |
(7.6) |
Подставовка уравнений (7.4) и (7.5) в (7.6) даст нам приведеиное ниже уравне ние билинейной поверхности:
Р(и,v) = (1-и)[(1-v)Р0,0 + vP0,1 ] +и [(1-v)P1.0 + vP~,~] =
Po.o] |
(7.7) |
Р10 |
|
=[(1-и)(1-v) и(1-v) (1-и)v иv]IPo.t· |
(0:5:и:5:1,0:5:v:5:1). |
Р,,, |
|
Мы можем убедиться, что заданные точки расположены по углам билинейной поверхности, подставив соответствующие комбинации нулей и единиц в уравне
ние (7.7). Это уравнение говорит нам также о том, что билинеймая поверхность представляет собой сопряжение угловых точек при помощи функций сопряже ния (1 - и)(1 - v), и(1 - v), (1 - u)v, uv. Из-за того что эти функции сопряжения
линейны по соответствующим параметрам, билинеймая поверхность обычно
оказывается плоской.
7.3. Лоскут Куна
Сопряжение углов дает билинейную поверхность. Сопряжение граничных кри
вых произвольной формы дает поверхность, называемую лоскутом. Куна ( Coon 's patch). Слово 4:Лоскут» указывает на то, что описываемая поверхность представ
ляет собой сегмент, соответствующий значениям параметров О :5: и :5: L О :5: v :5: 1.
Комбинирование лоскутоn позволяет образовать поверхность произвольной
формы и размера.
Уравнение лоскута Куна выводится следующим образом. Предположим, что нам
известны уравнения четырех граничных кривых: P 0 (v), Р1 (v), Q0(и) и Q1 (и)
(рис. 7.2). Предположим также, что направление кривых Q0(и) и Q1 (и) совпада ет (на рис. 7.2 эти кривые направлены вправо, что обозначено стрелкой). То же
предположение мы выскажем и относительно P 0 (v) и Р1 (v).
v~~ |
~ |
|
|
|
|||
'U |
Qo(u) |
Рис. 7.2. Граничные кривые, определяющие лоскут Куна
Если граничные кривые не удовлетворяют этим требованиям, вам придется вы
полнить преобразование их к описанному выше виду. Направление и интервал
изменения параметра легко изменить юшерсией или масштабированием [120].
7.3. Лоскут Куна |
205 |
Удовлетворяющие описанным требованиям кривые интерполируются так, как
показано ниже.
Выберем две кривые, расположенные друг напротив друга, например P 0 (v) и
Р1 (v). Интерполяция этих кривых в направлении и осуществляется линейным
уравнением
Р1 (и,v) = (1-и)Р0(v)+ иР1 (v). |
(7.8) |
Поверхность, определенная уравнением (7.8), будет ограничена кривой P 0 (v) при и= О и кривой Р1 (v) при и= 1. Одна'Ко две другие границы будут отрезками пря
мых, соединяющих угловые точки. Убедиться в этом можно, подставив в уравне
ние (7.8) v =О или v = 1. Таким образом, полученная поверхность не ограничива ется кривыми Q0 (и~Q1 (и).
Определим вторую поверхность, интерполируя Q0(и) и Q0 (v) в направлении v:
Р2 (и,v) = (1-v)Q0(и) + vQ1(и). |
(7.9) |
Подставляя граничные значения и и v в уравнение (7.9), можно убедиться, что
новая поверхность ограничивается кривыми Q0 (u) и Q0 (v), |
но |
не P 0 (v) или |
||
Р1 (v). Попробуем определить еще одну поверхность Р3 (и, v), |
сложив Р1 (и, v) и |
|||
Р2 (и,v), и проверим, не будет ли она ограничиваться требуемыми кривыми. |
||||
Р3 (и,v) = (1-u)P0 (v) + иР1 (v)+ (1-v)Q0(и)+ vQ1 (и). |
(7.10) |
|||
Подстапоnка граничных значений и и v в (7.10) дает: |
|
|
||
Р3 (O,v) = Р0 |
(v) + (1-v)Q0 (О)+ vQ1 (О); |
|
(7.11) |
|
Р3(1,v) = Р1 |
(v) + (1-v)Q0 (1) + vQ1(1); |
|
(7.12) |
|
Р3 (и,О) = Q0(и) + (1-и)Р0 |
(0) +и Р1 (О); |
|
(7.13) |
|
Р3 (u,1) = Q 1 (и)+ (1-и)Р0 |
(1) +и Р1 (1). |
|
(7.14) |
Если Р3(и,v) удовлетворяет поставленным требованиям к граничным кривым,
правыедва слагаемых в уравнениях (7.11)-(7.14) должны быть равны нулю. За метьте, что эти слагаемые представляют собой интерполяцию конечных точек
соответствующих граничных кривых. Другими словами, слагаемые, которые
должны быть равны нулю, описывают границы билинейной поверхности. Следо
вательно, правильное выражение для лоскута Куна получается вычитанием
уравнения билинейной поверхности из P 3 (u,v):
P(u,v) = (1-u)P0 (v)+ иР1 (v)+ (1-v)Q0(и)+ vQ1 (и) -(1-и)(1-v)Р0•0 -
(7.15)
-и(1-v)Р1•0 -(1-u)vP0.1 -иvР1•1 (05-u 5.1, 05.v5.1).
ЗдесЬ Р0.0 =P0 (0)=Q0 (0), Р1.о =Q0 (1)=P1 (0), Р0•1 =P0 (1)=Q1 (0), Рц =Р1 (1)=Q1 (1).
Благодаря простоте концепции и уравнений лоскут Куна использовался доста точно широко. Однако он непригоден для точного моделирования поверхно
стей, поскольку форма поверхности не может задаваться одними лишь ее гра
ницами.
206 |
Глава 7. Представление nоверхностей и работа с ними |
7 .4. &икубический лоскут
Бикубический лоскут (ЬiсиЬiс patch)- это поверхность, определяемая полиноми
альным уравнением третьего порядка по параметрам и и v:
3 :i |
(7.16) |
P(и,v)=:L:Laijиivi (О~и~1. O~v~1). |
i=O j=O
Уравнение (7.16) можно переписать в матричной форме:
г |
QOI |
|
|
|
|
Р(и,v) =(1 и и2 из] aiO |
а•• |
(7.17) |
а2о й21 |
|
|
йзо |
аз• |
|
В уравнениях (7.17) a!i -алгебраические вектор1:1ые коэффициенты с компонен
тами х, у и z. Влияние этих коэффициентов на форму поверхности не является
интуитивно понятным, точно так же, как по алгебраическим коэффициентам
уравнения (6.10) нельзя было представить себе форму кривой. Возникает жела
ние заменить алгебраические коэффициенты на геометрические, что было сдела но ранее при выводе эрмитовой кривой. Поскольку алгебраических коэффици
ентов для поверхности насчитывается 16 штук, нам нужно ввести 16 граничных
условий.
Первый набор граничных условий мы получим, потребовав, чтобы четыре гра
ничные точки Р(О,О},Р(О,1},Р(1,0),Р(1,1) удовлетворяли уравнению (7.17). Что
бы получить второй набор граничных условий, мы зададим nекторы касательных
к граничным кривым поверхности в угловых точках по параметрам и и v: Pu(O,O), Pu(0,1}, Pu(1,0), Ри(1,1) и Р,.(О,О}, Pv(0,1), Р,.(1,0), Р,,(1,1). Перечисленные гранич
ные условия определяют форму граничных кривых поверхности, поскольку они
определяют конечные точки этих кривых и векторы касательных в этих точках.
Через заданные граничные кривые можно провести бесконечно много поверхно стей, поэтому нам придется добавить граничные условия, которые определяли
бы форму внутренней области поверхности. Мы потребуем, чтобы вторая произ
водная n угловых точках имела определенные значения Pu,,(O,O}, Риv(О,1}, Риv(1,0), Р",,(1,1). Под второй производной мы понимаем следующее выражение, называе
мое вектороАt кручеиил (twist vector):
д2Р(и,v)
дидv
Ниже мы обсудим влияние nекторов кручения в углоnьiх точках на форму внут
ренней области поверхности.
Подставовка 16 граничных условий в уравнение (7.17) даст нам 16 линейных по a!i уравнений. Эти уравнения образуют систему, результат решения которой
подставляется обратно в уравнение (7.17)1, что дает нам приведеиное ниже урав
нение бикубического лоскута:
1 Уравнение эрмнтовой кривой получается при помощи аналогичиой процедуры.
7.4. Бикубический. лоскут |
|
207 |
|
Р(и,v) = |
|
|
|
Р(О,1) |
Р,.(О,О) |
||
Р(1,1) |
Р,.(1 ,0) |
||
Р11 |
(1,0) |
Р11,,(0,0) |
|
Р11 |
(1,1) |
Р111,(1,0) |
|
(О~ и~ 1, О~ v ~ 1), |
|
|
|
где функции сопряжения F1, F2, F3 и F4 определяются следующим образом:
F1 (и)= 1-Зи2 + 2и3 ;
F2(и) = Зи2 -2и3 ;
(7.19)
F3(и) =и -2u 2 +и3 ;
F4(и)=-uz +из
Это те же функции сопряжения, что и n уравнении эрмитоnой кривоi:i. Вообще говоря, уравнение (7.18) представляет собой попросту расширение уравнения
эрмитовой кривой для описания поверхности. Уравнение (7.18) может быть
редуцировано до уравнения кривой путем подстаноnки конкретного значения
одного из параметров, например v = v0 • Произведение последних двух матриц в
правой части уравнения (7.18) дает вектор-столбец. Это умножение может быть
интерпретировано следующим образом. Первая строка дает уравнение левой
граничной кривой между Р(О,О) н Р(О,1), а вторая строка дает уравнение правой
граничной кривой между Р(1,0) и Р(1,1) (рис. 7.3). При подстапоnке конкретно
го значения v0 первые две строки дают нам I<онечные точки А и В. Последние две
строки столбца для v = v0 задают nекторы касательных в направлении и в точках
А и В. Последнее утверждение мы проверим позже. Следовательно, уравне
ние (7.18) представляет собой объединение уравнений эрмнтовых кривых, соот
ветствующих разным значениям v. Граничные кривые, определяемые условиями v =О и v = 1, будут эрмитовыми кривыми. АналогичнЫ!\! образом можно пока зать, что и граничные I<риnые для и = О, и = 1 тоже будут эрмитовыми.
\ |
|
- |
|
Р(О,1) |
р 1,1) |
||
|
- |
|
|
|
|
|
|
|
-в |
||
А |
|
||
v+ |
|
|
|
|
|
\ |
|
|
|||
|
|
|
|
P(O,O)"t" |
Р(1,0) |
Рис. 7.3. Изопараметрическая кривая v = v0
При попытке воспользоваться уравнением (7.18) мы столкнемся с проблемой за
дания векторов кручения, влияние которых на форму поверхности не является
интуитивно понятным. Иногда для простоты нм присnаивают нулевые значения.
Получаемая таким способом поверхность называется лоскутом Фергюсона или
F-лоскутом (Ferguson 's patch или F-patch). Поскольку нулевые nекторы кручения
208 |
Глава 7. Представление поверхностей и работа с ними |
делают поверхность более плоской, F-лоскут не может использоваться для моде
лирования поверхностей с большой кривизной. Однако он хорошо описывает поверхности с нулевой кривизной по крайней мере в одном направлении во всех
точках.
Покажем теперь, как векторы кручения влияют на форму внутренней области поверхности. Если мы сможем показать, что векторы кручения определяют фор му изопараметрической кривой .v = v0 на рис. 7.3, мы сможем утверждать, что эти векторы влияют на любую внутреннюю изопараметрическую кривую, а значит, и
на всю внутреннюю область лоскута. Точки А и В определяются граничными
кривыми - эрмитовыми кривыми, которые не зависят от векторов кручения.
Следовательно, мы должны показать, что векторы касательных в точках А и В
определяются векторами кручения. Сделаем это, продифференцировав уравне
ние (7.18) по параметру и:
дР(и,v) = |
|
|
|
|
ди |
|
|
|
|
|
|
|
Р(О,1) |
Р.,(О,О) |
= [df1 (и) df2(и) |
dF3(и) |
Р(1,1) |
Р.,(1,0) |
|
dи |
dи |
dи |
Pu(1,0) |
Puv(O,O) |
|
|
|
Pu(1,1) |
Puv(1,0) |
=[-6и+6и2 |
6и-6и2 1- 4и + Зи 2 |
-2и+ Зи2]~~:~~~~G3(v) - |
||
|
|
|
|
(7.20) |
G 4 (v)
Обратите внимание, что произведение второй и третьей матриц мы записали в
виде вектора-столбца с элементами G 1(v), G2(v), G3(v), G4(v). Чтобы вычислить производную по и в точке А, мы должны подставить в уравнение (7.20) значения и= О, v = v0• Подстановка и= О в вектор-строку делает ее равной [О О 1 0], благо даря чему получается, что Pu(A) = G 3 (v0 ). Поскольку G3(v0) определяется векто
рами Pu(O,O), Pu(0,1), Puv(O,O) и Puv(0,1), мы заключаем, что векторы кручения
Puv(O,O) и Puv(0,1) определяют Pu(A).
Подставим и =1, v =v0 в уравнение (7.20 ), чтобы выяснить, от чего зависит Ри (В):
GI
(v0 )]
Ри(В)=[О О О 1] 2 (vo) =
Gз(Vo)
G4 (vo)
(7.21)
7.5. Поверхность Безье |
209 |
Мы показали, что вектор касательной в точке В зависит от векторов кручения
Рш,(1,0) и Ри,,(1,1). Отсюда мы делаем вывод, что векторы кручения влияют на любую внутреннюю изопараметрическую кривую, а следовательно, определяют
форму бикубического лоскута.
7.5. Поверхность Беэье
Можно расширить концепцию кривой Безье, определяемой задающим много угольником, на одно измерение, в результате чего получится поверхность Безье,
определяемая задающим многогранником. Уравнение поверхности Безье выгля
дит следующим образом:
n ", |
|
Р(и,v) = L LP;,j B;,"(и)Bj.rп(v) (О~ и ~ 1, О~ v ~ 1), |
(7.22) |
i=O j=O
где P;,j - радиус-векторы задающих точек, находящихся в вершинах задающего
многогранника (рис. 7.4), а В;," и Bj.rпфункции сопряжения, обычные для кри
вых Безье. Таким образом, степень уравнения поверхности по и и v определяется
количеством задающих точек в соответствующих направлениях.
Уравнение (7.22) можно раскрыть, записав сумму по j в явном виде:
" |
(7.23) |
Р(и,v) = L[P;,0 B0,",(v)+P;,1B1,",(v)+ ... +Р;.тВт,т(v)]В;,"(и). |
i=O
Уравнение (7.23) иллюстрирует, что поверхность Безье получается сопряжени
ем n + 1 кривых Безье, каждая из которых определяется задающими точками Р;.о, Р;,1 , Р;.2 , ... , Р;,т, сопрягаемыми функциями В;,"(и). Можно показать, что та же по верхность Безье получается при сопряжении т + 1 кривых Безье, определяемых
задающими точками Po.j, Рц, Р2.. , , P".j и функциями Bj.т(v). Итак, поверх
иость Безье получается, если задающие точки кривой Безье за.меиить кривыми
Безье.
Рис. 7.4. Поверхность Безье с задающим многогранником
Займемся исследованием свойств поверхности Безье. Сначала нужно показать,
что четыре угловые задающие точки задающего многогранника лежат на по-
210 Глава 7. Представление поверхностей и работа с ними
верхиости Безье. Для этого мы подставим граничные значения параметров и и v
в уравнение (7.22). Подстапавка и= О и v =О дает:
Р(О,О)= ta~Pi,jB;,п(O)Bj,m(O)= to[~P;,jBj,m(O)]В;,п(О)=
|
= t[fP;,j(~)vj(1-v)m-j] |
В;,11(0)= |
|
(7.24) |
|||
|
r=O J=O |
J |
|
|
,..о |
|
|
= t(m)P;,oB;,n(O) =(m)tP;JI(~)и;(1-и)"-;] |
и=О |
= |
|||||
r=O |
О |
О |
r=O |
~ l |
|
|
=(~)Ро.о(~)=Ро,о·
Равенство (7.24) показывает, что задающая точка Р0,0 лежит на поверхности и соответствует значениям параметра и =О, v =О. Та же процедура позволяет про верить, лежат ли остальные угловые задающие точки (Pn.O• Po,m• Р11.т) на поверх
ности.
В дополнение к этому мы можем показать, что граничные кривые поверхности
Безье также являются кривыми Безье, определяемыми соответствующим коли
чеством задающих точек. Подставим и = О в уравнение (7.22), чтобы получить
уравнение одной из граничных кривых. |
|
|
|
|
P(O,v) = i: fP;,jB;,n(O)Bj,m (v) = f[tP;,j (~)и;(1-иу-;] |
|
Bj,m(v) = |
||
i=O j =0 |
j =0 i=O |
l |
и=О |
(7.25) |
rn
= L,P0,jBj,m(v).
j=O
Уравнение (7.25) говорит нам о том, что граничная кривая, соответствующая значению параметра и = О, является кривой Безье с задающими точками Р0,0,
Р0.1, ..., Po.m· Аналогичным образом можно показать, что оставшиеся три гранич
ные кривые также являются кривыми Безье, а их задающие точки являются
крайними вершинами задающего многогранника. Поскольку вектор касательной на конце кривой Безье определяется соседней с концом задающей точкой, векто
ры касательных в направлении v в точках Р0,0 и Po,m определяют точки Р0,1 и Po,m-l соответственно. Следовательно, Р0,1 и Po.m-l играют ту же роль, что и
Р,,(О,О) и Pv(0,1) для бикубического лоскута. Если с этой точки зрения подойти
к поверхности Безье степени 3 по и и v (см. рис. 7.4), мо)Кно сделать следующее
утверждение. Задающая точка Р1.0 играет ту же роль, что и Ри (0,0) для бикубиче ского лоскута, Р2,0 - ту же, что Pu(1,0), Р1,3 - ту же, что Pu(0,1), Р2,3 - ту же, что Pu(1,1), Ро,1 - ту же, что Pv(O,O), Р0•2 - ту же, что Р11(0,1), Р3,1 - ту же, что Р,,(1,0), Р3•2 - ту же, что Pv(1,1). Следовательно, эти восемь задающих точек вместе с че
тырьмя угловыми задающими точками определяют граничные кривые поверхно
сти. Оставшиеся четыре задающие точки Рц. Р2.1, Р1.2, Р2,2 определяют форму
внутренней области поверхности подобно векторам кручения бикубического
лоскута.
Мы уже отмечали, что степень поверхности Безье определяется количеством за
дающих точек. Уравнения поверхностей высоких степеней страдают теми же не-
7.5. Поверхность Безье |
211 |
достатками, что и уравнения кривых высоких степеней, поэтому при молелира nании поверхностей обычно используются поверхности Безье степени 3 по и и r;,
точно так же как при моделировании кривых использоnались кривые Безье сте
пени 3. При необходимости смоделировать сложную поверхность приходится создавать несколько поверхностей Безье третьей степени и соединять их друг с
лругом. Поверхности должны соединяться таким образом, чтобы обеспечивалась
непрерывность на границе, по которой осуществляется соедннение. Это достига
ется наложением ограничений на задающие точки, расположенные слева и спра ва от границы. Ограничение состоит в том, что эти точки должны лежать на пря
мой линии, проходящей через задюощую точку, лежащую на общей границе (рис. 7.5). Если это требование выполняется, первая производная оказывается непрерывной во всех точках границы [72, 138, 46].
Рис. 7.5. Обьединение лоскутов Безье
7.5.1. Вычисление поверхности Беэье
Координаты х, у и z точки поверхности Безье, соответствующей значениям пара метров и = u0 и v = v0 , вычисляются по формуле:
1/ т |
|
P(u 1pv0 ) = L L Pi.j В;.~~(u 0 )В1.т(v0 ). |
(7.26) |
i=O j =0
Перепишем уравнение (7.26), раскрыв сумму по i:
" ",
P(u 0 ,r10 ) =L L P;,J В;,"(u 0 )В1.т(v0 ) =
i=!l )=0
(7.27)
В уравнении (7.27) сумма I7=0 P 0.1 B;.",(v 0 ) вычисляется при помощи алгоритма
де Кастильо по задающим точкам Р0.1. Алгоритм де Кастильо описан в приложе-