Урок в системе "Арт-Вектор"

"Поверхности"

Упражнение 1. Спроектировать замкнутую поверхность (см. МК), у которой кривые 2-го порядка (4 штуки) лежат в разных координатных плоскостях. Через три и четыре сечения проходят кривые 2-го и 3-го порядков Лагранжа. Далее идет полиповерхность, т.е резкий скачек  к поверхностям, образованным по линейному закону.
   
Чило выводимых сечений по u и v регулируется. И для того, чтобы быстрее работали всякие преобразования, надо сечений задавать для линейчатых поверхностей минимальное, т.е изображать по узлам сечений. Пока в системе для поверхностей это возможность отсутствует. Поэтому нужно число сечений по u задавть самим. Их получается, в принципе столько, сколько есть на самом деле. В даннм случае 5 (начало и конец - два сечения)
 


Упражнение 2. Спроектировать замкнутую поверхность (см. МК), у которой полилинии (4 штуки) лежат в разных координатных плоскостях.
   
Все повторяется, как в упражнении 1. Чтобы поверность четко проходила по 5 сечениям полиповерхности - число сеченний по u задаем 5


Упражнение 3. Спроектировать замкнутую поверхность (см. МК), у которой кривые Безье (4 штуки) лежат в разных координатных плоскостях. Здесь как и в первом случае есть возможность упправлять фомлй сопряжения. Так например, задавая параметр управления близкий у 1 можно приблизиться у фигуре, полученной в упражнении 2.

Сопряжения труб на тех возможностях, которые есть в системе

Упражнение 4. Даны 4 окружности. Требуется через них провести кубическую поверхность
Решение. Через 4 линии проведем кубическую поверхность Лагранжа (МК). Вот что получилось. Поверхность "закрутилась". 2-е и 3-е сечения надо повернуть (см. МК) и сдвинуть к центру.
    
И все же результат отрицательный.


Упражнение 5. Пусть надо построить соединение труб по линейному закону. Для этого надо найти эллипс в котором и происходит сопряжение.
          
Задача (см. МК) довольно сложная в плане всяких поворотов, реверсирования (в диалоге для 3, 5 и 6 сечений) и прочее, но решаемая.


Выводы. Решение задач на проектирование труб, видимо, необходимо реализовать в системе "Вектор"на уровне меню по третьему типу сопряжений (см. линии и поверхности), с учетом движения образующей-окружности по направляющей и ее угла поворота вокруг своей оси. Однако сначала надо сделать три типа сопряжений полилинии.


Кривые 2-го порядка (4 штуки) лежат в разных координатных плоскостях.
' линия u0
Set pu00 = p(-2,0,0) ' начало
Set pu0c = p(0,4,0)  ' cередина
Set pu01 = p(2,0,0)  ' конец

' линия u1
Set pu10 = p(-2,0,0) ' начало
Set pu1c = p(0,0,4)  ' cередина
Set pu11 = p(2,0,0)  ' конец

' линия u2
Set pu20 = p(-2,0,0) ' начало
Set pu2c = p(0,-4,0)  ' cередина
Set pu21 = p(2,0,0)  ' конец

' линия u3
Set pu30 = p(-2,0,0) ' начало
Set pu3c = p(0,0,-4)  ' cередина
Set pu31 = p(2,0,0)  ' конец

' линия u0
Set pu00 = p(-2.1,0.1,0) ' начало
Set pu0c = p(0.1,4/1,0)  ' cередина
Set pu01 = p(2.1,0.1,0)  ' конец
 
 

s=0.7 ' полнота кривых
suv=0
' задать и превратить линии в полилинии

Kvadr.ss pu00, pu01, pu0c, s   ' u0
Kvadr.ss pu10, pu11, pu1c, s   ' u1
Kvadr.ss pu20, pu21, pu2c, s   ' v0
Kvadr.ss pu30, pu31, pu3c, s   ' v0
Kvadr.ss pu00, pu01, pu0c, s   ' u0



В сечениях полилинии

' линия u0
Set pu00 = p(-2,0,0) ' начало
Set pu0c = p(-2,4,0)  ' cередина
Set pu0c2 = p(2,4,0)  ' cередина
Set pu01 = p(2,0,0)  ' конец

Polyline.Reset
Polyline.AddP pu00
Polyline.AddP pu0c
Polyline.AddP pu0c2
Polyline.AddP pu01
Polyline.SaveInDoc ( ngroup )
Polyline.Draw
 

' линия u1
Set pu10 = p(-2,0,0) ' начало
Set pu1c = p(-2,0,4)  ' cередина
Set pu1c2 = p(2,0,4)  ' cередина
Set pu11 = p(2,0,0)  ' конец

Polyline.Reset
Polyline.AddP pu10
Polyline.AddP pu1c
Polyline.AddP pu1c2
Polyline.AddP pu11
Polyline.SaveInDoc ( ngroup )
Polyline.Draw
 

' линия u2
Set pu20 = p(-2,0,0) ' начало
Set pu2c = p(-2,-4,0)  ' cередина
Set pu2c2 = p(2,-4,0)  ' cередина
Set pu21 = p(2,0,0)  ' конец

Polyline.Reset
Polyline.AddP pu20
Polyline.AddP pu2c
Polyline.AddP pu2c2
Polyline.AddP pu21
Polyline.SaveInDoc ( ngroup )
Polyline.Draw
 

' линия u3
Set pu30 = p(-2,0,0) ' начало
Set pu3c = p(-2,0,-4)  ' cередина
Set pu3c2 = p(2,0,-4)  ' cередина
Set pu31 = p(2,0,0)  ' конец

Polyline.Reset
Polyline.AddP pu30
Polyline.AddP pu3c
Polyline.AddP pu3c2
Polyline.AddP pu31
Polyline.SaveInDoc ( ngroup )
Polyline.Draw
 

' линия u4=u0
Set pu00 = p(-2.1,0,0) ' начало
Set pu0c = p(-2.1,4,0)  ' cередина
Set pu0c2 = p(2.1,4,0)  ' cередина
Set pu01 = p(2.1,0,0)  ' конец

Polyline.Reset
Polyline.AddP pu00
Polyline.AddP pu0c
Polyline.AddP pu0c2
Polyline.AddP pu01
Polyline.SaveInDoc ( ngroup )
Polyline.Draw



Сопряжения в трубах - Лагранж
' Задаем 4 окр.-сечения и сразу превратим их в полилинии

' линия u0
r=1
Krug.ss p(-2,0,0), r, p(1,0,0)
Polyline.FromCurrObj 55
' линия u1
Krug.ss p(-1,0,0), r, p(1,0,0)
Polyline.FromCurrObj 55
' линия u2
Krug.ss p(1,-1,0), r, p(0,1,0)
Polyline.FromCurrObj 55
' линия u3
Krug.ss p(1,-2,0), r, p(0,1,0)
Polyline.FromCurrObj 55


' Сопряжения в трубах 3-х видов
' Задаем 4 окр.-сечения и сразу превратим их в полилинии

Set O1=p(-3,0,0)
Set O2=p(-1.5,0,0)
Set O3=p(0,-1.5,0)
Set O4=p(0,-3,0)
Set O=p(0,0,0) ' здесь оси пересекаются
' линия u0
r=1
Krug.ss O1, r, p(1,0,0)
Polyline.FromCurrObj 55

obj.xAngle=-90
obj.SetH

' линия u1
Krug.ss O2, r, p(1,0,0)
Polyline.FromCurrObj 55
obj.xAngle=-90
obj.SetH

' линия u2
Krug.ss O3, r, p(0,1,0)
Polyline.FromCurrObj 55

' линия u3
Krug.ss O4, r, p(0,1,0)
Polyline.FromCurrObj 55

' Определяем эллипс в углу (его большой диаметр
' Для начала зададим биссекторную плоскость
Set K = PointOtr(O2, O3, 0.5)
Otrezok.ss O2,O3
Ngpoint.ss K
' Trian.ss O, K, p(O.x,O.y,2)
Set F = P(0, 0, 0) ' пустышка
Set G = OrtPlaneOtr(O2,O3,K,F)
Trian.ss K, G, F
 Set K1 = PerSlinePlane (K, G, F, p(O1.x,O1.y+r,0), p(O2.x,O2.y+r,0))
 Set K2 = PerSlinePlane (K, G, F, p(O1.x,O1.y-r,0), p(O2.x,O2.y-r,0))

Otrezok.ss K1,K2
r2=DlinaOtr (K1, k2)
 Set Oe= PerSlinePlane (K, G, F, O1, O2)
' Нормаль к плоскости
Set Np = NormPlosk (K, G, F)
Arc.ss Oe, r, r2/2, 0, 360, Np,-45
Polyline.FromCurrObj 55