指向性

平野拓一

2D Radiation Pattern

ParametricPlot[{{Sin[t] Sin[t], 
          Sin[t] Cos[t]}, 
{-Sin[t] Sin[t], 
          Sin[t] Cos[t]}}, {t, 0, 
        Pi}, 
AspectRatio -> 
        Automatic, 
Ticks -> 
        None, 
PlotStyle -> {AbsoluteThickness[
            2]}, 
AxesStyle -> {AbsoluteThickness[
            2]}, 
AxesLabel -> {"x", "z"}]

ParametricPlot[{Sin[t] Sin[t], Sin[t] Cos[t]}, {t, 0, Pi}]

3D Radiation Pattern

<< Graphics`Graphics3D`;
<< Graphics`SurfaceOfRevolution`;
donut = 
        SurfaceOfRevolution[{Sin[t] Sin[t], Sin[t] Cos[t]}, {t, 0, 
            Pi}, 
BoxRatios -> {1, 1, 
              1}, 
PlotRange -> {{-1, 1}, {-1, 
                1}, {-1, 1}}, 
Boxed -> 
            False, 
Axes -> 
            None
];
Shadow[
      donut, 
ZShadow -> 
        False]

3D Radiation Pattern

パッケージ
Graphics`PlotField3D`
より、

cross3[{a1_, a2_, a3_}, {b1_, b2_, b3_}] := {-(a3 b2) + 
            a2 b3, a3 b1 - a1 b3, -(a2 b1) + 
            a1 b2};
mag[a_] := Sqrt[Apply[Plus, a^2]];
\(vector3D[point : {x_, y_, z_}, grad : {dx_, dy_, dz_}, False] := 
      Line[{point, point + grad}]
\)
\(vector3D[point : {x_, y_, z_}, grad : {dx_, dy_, dz_}, True] := 
      Point[{x, y, z}] /; 
        grad == {0, 0, 0}
\)
vector3D[point : {x_, y_, z_}, grad : {dx_, dy_, dz_}, True] := 
      Module[{endpoint, perp, perpm, offsetPoint, arrowA, arrowB, arrowC, 
          arrowD}, 
        endpoint = point + grad; 
perp = 
          cross3[grad, {0, 0, 1}]; 
perpm = 
          mag[perp]; 
If[perpm == 0, 
          perp = cross3[grad, {0, 1, 0}]; 
perpm = 
            mag[perp]]; 
perp = 
          perp mag[grad]/(7 perpm); 
offsetPoint = 
          point + 4/5 grad; 
arrowA = 
          offsetPoint + perp; 
perp = 
          cross3[grad, perp]; 
perp = 
          perp mag[grad]/(7 mag[perp]); 
arrowB = 
          offsetPoint + perp; 
perp = 
          cross3[grad, perp]; 
perp = 
          perp mag[grad]/(7 mag[perp]); 
arrowC = 
          offsetPoint + perp; 
perp = 
          cross3[grad, perp]; 
perp = 
          perp mag[grad]/(7 mag[perp]); 
arrowD = 
          offsetPoint + 
            perp; 
{Line[{point, endpoint}],   
            Line[{arrowA, endpoint, arrowC}],   
            Line[{arrowB, endpoint, arrowD}],   
            Line[{arrowA, arrowB, arrowC, arrowD, 
              arrowA}]   }]

Show[Graphics3D[vector3D[{0, 0, -1}, {0, 0, 1}, True]]]

Radiation Pattern

<< Graphics`SurfaceOfRevolution`;
donut = 
      SurfaceOfRevolution[{Sin[t] Sin[t], Sin[t] Cos[t]}, {t, 0, 
          Pi}, 
BoxRatios -> {1, 1, 
            1}, 
PlotRange -> {{-1, 1}, {-1, 
              1}, {-1, 1}}, 
Boxed -> 
          False, 
Axes -> 
          None
]

Show[{Graphics3D[{AbsoluteThickness[2], 
            vector3D[{0, 0, -1}, {0, 0, 2}, True]}], 
        donut}, 
PlotRange -> 
        All, 
Boxed -> 
        False, 
Axes -> 
        None
]

For LiveGraphics3D

InputForm[donut]