Guest User

Untitled

a guest
Apr 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. rotationangle[{i_, j_}] := Which[
  2. i >= 0 && j >= 0, VectorAngle[{1, 0}, {i, j}],
  3. i < 0 && j >= 0, VectorAngle[{0, 1}, {i, j}] + Pi/2,
  4. i < 0 && j < 0, VectorAngle[{-1, 0}, {i, j}] + Pi,
  5. i >= 0 && j < 0, VectorAngle[{0, -1}, {i, j}] + 3 Pi/2]
  6.  
  7. quadrant[{i_, j_}] := Which[
  8. i >= 0 && j >= 0, 1, i < 0 && j >= 0, 2,
  9. i < 0 && j < 0, 3, i >= 0 && j < 0, 4]
  10.  
  11. anglecalc[u_, v_] := Module[{a, theta, r},
  12. a = VectorAngle[u, v];
  13. theta = -rotationangle[u];
  14. r = RotationTransform[theta];
  15. If[quadrant[r[v]] > 2, 2 Pi - a, a]]
  16.  
  17. (* case 1 *)
  18. {a, b} = {{{4, 3}, {3, 0}}, {{3, 0}, {10, 1}}};
  19. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  20. {u, v} = a - b;
  21. N[anglecalc[v, -u] 180/Pi]
  22.  
  23. r = RotationTransform[90 Degree];
  24.  
  25. (* case 2 *)
  26. {a, b} = r /@ {a, b};
  27. Graphics[{Arrowheads[0.22], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  28. {u, v} = a - b;
  29. N[anglecalc[v, -u] 180/Pi]
  30.  
  31. (* case 3 *)
  32. {a, b} = r /@ {a, b};
  33. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  34. {u, v} = a - b;
  35. N[anglecalc[v, -u] 180/Pi]
  36.  
  37. (* case 4 *)
  38. {a, b} = r /@ {a, b};
  39. Graphics[{Arrowheads[0.22], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  40. {u, v} = a - b;
  41. N[anglecalc[v, -u] 180/Pi]
  42.  
  43. (* case 5 *)
  44. {a, b} = {{{4, 3}, {3, 0}}, {{3, 0}, {10, -7}}};
  45. Graphics[{Arrowheads[0.12], Arrow[{a, b}]}, ImageSize -> {120, Automatic}]
  46. {u, v} = a - b;
  47. N[anglecalc[v, -u] 180/Pi]
  48.  
  49. (* case 6 *)
  50. {a, b} = r /@ {a, b};
  51. Graphics[{Arrowheads[0.09], Arrow[{a, b}]}, ImageSize -> {Automatic, 120}]
  52. {u, v} = a - b;
  53. N[anglecalc[v, -u] 180/Pi]
  54.  
  55. (* case 7 *)
  56. {a, b} = r /@ {a, b};
  57. Graphics[{Arrowheads[0.12], Arrow[{a, b}]}, ImageSize -> {120, Automatic}]
  58. {u, v} = a - b;
  59. N[anglecalc[v, -u] 180/Pi]
  60.  
  61. (* case 8 *)
  62. {a, b} = r /@ {a, b};
  63. Graphics[{Arrowheads[0.09], Arrow[{a, b}]}, ImageSize -> {Automatic, 120}]
  64. {u, v} = a - b;
  65. N[anglecalc[v, -u] 180/Pi]
  66.  
  67. (* case 9 *)
  68. {a, b} = {{{4, 3}, {3, 0}}, {{3, 0}, {-7, -5}}};
  69. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  70. {u, v} = a - b;
  71. N[anglecalc[v, -u] 180/Pi]
  72.  
  73. (* case 10 *)
  74. {a, b} = r /@ {a, b};
  75. Graphics[{Arrowheads[0.13], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  76. {u, v} = a - b;
  77. N[anglecalc[v, -u] 180/Pi]
  78.  
  79. (* case 11 *)
  80. {a, b} = r /@ {a, b};
  81. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  82. {u, v} = a - b;
  83. N[anglecalc[v, -u] 180/Pi]
  84.  
  85. (* case 12 *)
  86. {a, b} = r /@ {a, b};
  87. Graphics[{Arrowheads[0.13], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  88. {u, v} = a - b;
  89. N[anglecalc[v, -u] 180/Pi]
  90.  
  91. (* case 13 *)
  92. {a, b} = {{{4, 3}, {3, 0}}, {{3, 0}, {-7, 5}}};
  93. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  94. {u, v} = a - b;
  95. N[anglecalc[v, -u] 180/Pi]
  96.  
  97. (* case 14 *)
  98. {a, b} = r /@ {a, b};
  99. Graphics[{Arrowheads[0.21], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  100. {u, v} = a - b;
  101. N[anglecalc[v, -u] 180/Pi]
  102.  
  103. (* case 15 *)
  104. {a, b} = r /@ {a, b};
  105. Graphics[{Arrowheads[0.1], Arrow[{a, b}]}, ImageSize -> {150, Automatic}]
  106. {u, v} = a - b;
  107. N[anglecalc[v, -u] 180/Pi]
  108.  
  109. (* case 16 *)
  110. {a, b} = r /@ {a, b};
  111. Graphics[{Arrowheads[0.21], Arrow[{a, b}]}, ImageSize -> {Automatic, 150}]
  112. {u, v} = a - b;
  113. N[anglecalc[v, -u] 180/Pi]
  114.  
  115. myVectorAngle[{a_, b_}, {c_, d_}] :=
  116. Evaluate[With[{code =
  117. ReIm[(c + I d)/(a + I b)] // ComplexExpand // Simplify},
  118. ArcTan @@ code
  119. ]]
Add Comment
Please, Sign In to add comment