Методическое пособие по решению задач геометрического моделирования в системе MathCAD. Найханов В.В. - 37 стр.

UptoLike

Составители: 

37
выглядит следующим образом:
jiji
heA
=
,
. Значит nHEn
r
r
=
, где
=
3
2
1
e
e
e
E
и
=
3
2
1
h
h
h
H
. Иначе говоря, вектор n
r
выглядит следующим образом:
[]
=
0
sin
cos
321
3
2
1
ϕ
ϕ
eee
h
h
h
n
r
. Для того чтобы разрешить данную задачу, составим
следующую систему уравнений. Мы рассматриваем вращение некоторого
вектора вокруг произвольной оси, поэтому
0
0
= kn
r
r
и 0= kn
r
r
, или что
равносильно
[]
0
0
r
r
r
r
=×× knn
. По условию, вектор n
r
- единичный, а угол между
векторами
0
n
r
и n
r
равен
ϕ
, т.е.
ϕ
cos
0
=
nn
r
r
. Отсюда имеем:
[]
1
cos
0
0
0
=
=
=××
n
nn
knn
ϕ
rr
r
r
r
r
.
Произведя элементарные преобразования, не составляет особого труда
вычислить координаты вектора
),,(
zyx
nnnn .
Как иллюстрацию проведенных выкладок, рассмотрим простой
реальный пример построения центральной проекции эллипсоида в
программной среде «MathCAD».
В среде программирования «MathCAD 2001» операторы языка очень
сильно похожи на язык математических формул. Поэтому этот документ
можно считать иллюстрацией выше приведенных аналитических выражений.
Line CreateSpace L 0, 1, 100,():=Lt() A t C A()+:=
Rot CreateSpace N 0, 2π, 100,
()
:=Nt() FNrt() S+:=Nr t()
cos t()
sin t()
0
:=
*
F
ij,
E
i
H
j
:=j02..:=i02..:=
H
h1
h2
h3
:=E
e1
e2
e3
:=h2
h1 h3×
h1 h3×
:=h3
CA
CA
:=h1
DS
DS
:=
S
1.454
2.418
2.773
=S Find B():=BA()CA()×
0
0
0
DB()CA() 0Given
B
0
0
0
:=D
2
1
5
:=C
5
1
1
:=A
5
5
6
:=e3
0
0
1
:=e2
0
1
0
:=e1
1
0
0
:=
                                                                       37

                                                                                                                 ⎡ e1 ⎤
                                                                    = ei ⋅ h j . Значит n = E ⋅ H ⋅ n , где E = ⎢⎢e 2 ⎥⎥ и
                                                                                        r           r′
выглядит следующим образом: Ai , j
                                                                                                                 ⎢⎣e3 ⎥⎦
      ⎡ h1 ⎤
H = ⎢⎢h2 ⎥⎥ . Иначе говоря, вектор n выглядит следующим образом:
                                                    r

      ⎢⎣ h3 ⎥⎦
    ⎡ h1 ⎤                ⎡cos ϕ ⎤
n = ⎢h2 ⎥ ⋅ [e1 e2 e3 ]⋅ ⎢⎢ sin ϕ ⎥⎥ . Для того чтобы разрешить данную задачу, составим
r ⎢ ⎥

    ⎢⎣ h3 ⎥⎦              ⎢⎣ 0 ⎥⎦
следующую систему уравнений. Мы рассматриваем вращение некоторого
                                                          r       r
вектора вокруг произвольной оси, поэтому nr0 ⋅ k = 0 и nr ⋅ k = 0 , или что
                          r r                        r
равносильно [nr × nr0 ] × k = 0 . По условию, вектор n - единичный, а угол между
                                                                                                                        r    r
                                                                                                            [nr × nr0 ] × k = 0
          r     r
векторами n 0 и n равен ϕ , т.е. nr ⋅ nr0 = cos ϕ . Отсюда имеем: nr ⋅ nr0 = cos ϕ .
                                                                                                                  n =1
Произведя элементарные преобразования, не составляет особого труда
вычислить координаты вектора n(n x , n y , n z ) .
     Как иллюстрацию проведенных выкладок, рассмотрим простой
реальный пример построения центральной проекции эллипсоида в
программной среде «MathCAD».
     В среде программирования «MathCAD 2001» операторы языка очень
сильно похожи на язык математических формул. Поэтому этот документ
можно считать иллюстрацией выше приведенных аналитических выражений.

      ⎛1⎞       ⎛0⎞         ⎛0⎞       ⎛ −5 ⎞       ⎛5⎞          ⎛2⎞          ⎛0⎞
      ⎜  ⎟      ⎜    ⎟      ⎜ ⎟
e1 := 0 e2 := 1 e3 := 0 A := 5 C := 1 ⎜     ⎟      ⎜   ⎟        ⎜
                                                           D := 1   ⎟  B := ⎜ 0 ⎟
      ⎜ ⎟       ⎜ ⎟         ⎜ ⎟       ⎜ ⎟          ⎜ ⎟          ⎜ ⎟          ⎜ ⎟
      ⎝0⎠       ⎝0⎠         ⎝1⎠       ⎝6⎠          ⎝1⎠          ⎝5⎠          ⎝0⎠
                                                     ⎛0⎞                            ⎛ 1.454 ⎞
Given ( D − B) ⋅ ( C − A ) 0 ( B − A ) × ( C − A )   ⎜ 0 ⎟    S := Find( B)     S = ⎜ 2.418 ⎟
                                                     ⎜ ⎟                            ⎜       ⎟
                                                     ⎝0⎠                            ⎝ 2.773 ⎠
                                                              ⎛ e1 ⎞        ⎛ h1 ⎞
                                                         E := e2 H := ⎜ h2 ⎟
                                                              ⎜    ⎟
        D−S               C−A             h1 × h3
h1 :=               h3 :=        h2 := −
        D−S               C−A             h1 × h3             ⎜ ⎟           ⎜ ⎟
                                                              ⎝ e3 ⎠        ⎝ h3 ⎠
i := 0 .. 2       j := 0 .. 2   F       := E ⋅ H
                                 i, j       i      j
              ⎛ cos ( t) ⎞
 Nr( t) := ⎜ sin ( t)   ⎟       N( t ) := F⋅ Nr( t) + S            Rot := CreateSpace ( N , 0 , 2π , 100)
              ⎜         ⎟ *
              ⎝ 0       ⎠
  L( t) := A + t⋅ ( C − A )             Line := CreateSpace ( L, 0 , 1 , 100)