Difference between revisions of "Plotting Different Frames"
Jump to navigation
Jump to search
Line 116: | Line 116: | ||
This gives the (x' , y')=(1.68318, 0) in the DC frame for<math> \phi=0^{\circ}, t=0</math> | This gives the (x' , y')=(1.68318, 0) in the DC frame for<math> \phi=0^{\circ}, t=0</math> | ||
+ | |||
+ | The slope m, with respect to x, is found as<math>\frac{ \Delta x}{\Delta y} = \frac{(1.67396 - 1.076)}{(0.175941 - 0.113092)}=\frac{0.59796}{0.0628481}</math>=9.514 | ||
+ | |||
+ | |||
+ | Slope point form gives | ||
+ | |||
+ | <center><math>x-x_1=m(y-y_1) </math></center> | ||
+ | |||
+ | <center><math>\Rightarrow x - 1.67396 = 9.514(y - 0.17594) </math></center> | ||
+ | |||
+ | <center><math>\Rightarrow y = 9.514x-1.67396 + 1.67396</math></center> | ||
+ | |||
+ | <center><math>\Rightarrow y = 9.514x</math></center> | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | SemiMajorAxis = | ||
+ | ContourPlot[Y == 0, {Y, -1, 1}, {X, 0, 1.8}, | ||
+ | Frame -> {True, True, False, False}, | ||
+ | PlotLabel -> | ||
+ | "Right side limit of DC as a function of X and Y", | ||
+ | FrameLabel -> {"y (meters)", "x (meters)"}, ContourStyle -> Red, | ||
+ | PlotLegends -> Automatic]; | ||
+ | SemiMajorAxisRotated = | ||
+ | ContourPlot[X == 9.614 Y, {Y, -2, 2}, {X, 0, 1.8}, | ||
+ | Frame -> {True, True, False, False}, | ||
+ | PlotLabel -> | ||
+ | "Right side limit of DC as a function of X and Y", | ||
+ | FrameLabel -> {"y (meters)", "x (meters)"}, ContourStyle -> Blue, | ||
+ | PlotLegends -> Automatic]; | ||
+ | </pre> | ||
+ | |||
+ | The center | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | In[161]:= rFromXtoY.{\[CapitalDelta]a, 0, 0} // MatrixForm | ||
+ | |||
+ | Out[161]//MatrixForm= \!\( | ||
+ | TagBox[ | ||
+ | RowBox[{"(", "", | ||
+ | TagBox[GridBox[{ | ||
+ | {"1.0760024073650314`"}, | ||
+ | { | ||
+ | RowBox[{"-", "0.11309241017012851`"}]}, | ||
+ | {"0.`"} | ||
+ | }, | ||
+ | GridBoxAlignment->{ | ||
+ | "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, | ||
+ | "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, | ||
+ | GridBoxSpacings->{"Columns" -> { | ||
+ | Offset[0.27999999999999997`], { | ||
+ | Offset[0.5599999999999999]}, | ||
+ | Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { | ||
+ | Offset[0.2], { | ||
+ | Offset[0.4]}, | ||
+ | Offset[0.2]}, "RowsIndexed" -> {}}], | ||
+ | Column], "", ")"}], | ||
+ | Function[BoxForm`e$, | ||
+ | MatrixForm[BoxForm`e$]]]\) | ||
+ | </pre> | ||
+ | |||
+ | The vertex | ||
<pre> | <pre> |
Revision as of 19:05, 1 May 2017
We can define different arrays to collect the coordinates in the different frames using a passive transformation. Assuming that the intersection of the ellipse and sense wires is in the y-x plane, we will have a positive rotation,
rFromYtoX = ( { {Cos[6 \[Degree]], -Sin[6 \[Degree]], 0}, {Sin[6 \[Degree]], Cos[6 \[Degree]], 0}, {0, 0, 1} } ); rFromXtoY = ( { {Cos[6 \[Degree]], Sin[6 \[Degree]], 0}, {-Sin[6 \[Degree]], Cos[6 \[Degree]], 0}, {0, 0, 1} } ); yxPoints = constant\[Theta]; constant\[Theta]yx = constant\[Theta]; constant\[Theta]yxRotated = constant\[Theta]; constant\[Theta]xyz = constant\[Theta]; constant\[Theta]xyzRotated = constant\[Theta]; RowLengths = Table[{Nothing}, {i, 1, 36}]; For[rows = 1, rows < 37, rows++, RowLengths[[rows]] = Length[constant\[Theta][[rows]]]; For[columns = 1, columns < RowLengths[[rows]] + 1, columns++, \[Theta] = rows + 4; \[Phi] = constant\[Theta][[rows, columns, 1]]; constant\[Theta]yx[[rows, columns]] = {y, Sqrt[a^2 (1 - y^2/b^2)] - \[CapitalDelta]a}; constant\[Theta]xyz[[rows, columns]] = {constant\[Theta]yx[[rows, columns, 2]], constant\[Theta]yx[[rows, columns, 1]], 0}; If[constant\[Theta][[rows, columns, 1]] < 0, constant\[Theta]yx[[rows, columns, 1]] = -constant\[Theta]yx[[rows, columns, 1]]; constant\[Theta]xyz[[rows, columns, 2]] = -constant\[Theta]xyz[[rows, columns, 2]]; ]; constant\[Theta]xyzRotated[[rows, columns]] = rFromYtoX.{constant\[Theta]xyz[[rows, columns, 1]], constant\[Theta]xyz[[rows, columns, 2]], constant\[Theta]xyz[[rows, columns, 3]]}; constant\[Theta]yxRotated[[rows, columns]] = {constant\[Theta]xyzRotated[[rows, columns, 2]], constant\[Theta]xyzRotated[[rows, columns, 1]]}; yxPoints[[rows, columns]] = {y, Sqrt[a^2 (1 - y^2/b^2)] - \[CapitalDelta]a, constant\[Theta][[rows, columns, 1]], constant\[Theta][[rows, columns, 2]]}; ] ]; ClearAll[\[Theta], \[Phi]]; DesiredyxPoints = Desiredconstant\[Theta]; Desiredconstant\[Theta]yx = Desiredconstant\[Theta]; Desiredconstant\[Theta]yxRotated = Desiredconstant\[Theta]; Desiredconstant\[Theta]xyz = Desiredconstant\[Theta]; Desiredconstant\[Theta]xyzRotated = Desiredconstant\[Theta]; DesiredRowLengths = Table[{Nothing}, {i, 1, 36}]; For[rows = 1, rows < 37, rows++, DesiredRowLengths[[rows]] = Length[Desiredconstant\[Theta][[rows]]]; For[columns = 1, columns < DesiredRowLengths[[rows]] + 1, columns++, \[Theta] = rows + 4; \[Phi] = Desiredconstant\[Theta][[rows, columns, 1]]; Desiredconstant\[Theta]yx[[rows, columns]] = {y, Sqrt[a^2 (1 - y^2/b^2)] - \[CapitalDelta]a}; Desiredconstant\[Theta]xyz[[rows, columns]] = {Desiredconstant\[Theta]yx[[rows, columns, 2]], Desiredconstant\[Theta]yx[[rows, columns, 1]], 0}; If[Desiredconstant\[Theta][[rows, columns, 1]] < 0, Desiredconstant\[Theta]yx[[rows, columns, 1]] = -Desiredconstant\[Theta]yx[[rows, columns, 1]]; Desiredconstant\[Theta]xyz[[rows, columns, 2]] = -Desiredconstant\[Theta]xyz[[rows, columns, 2]]; ]; Desiredconstant\[Theta]xyzRotated[[rows, columns]] = rFromYtoX.{Desiredconstant\[Theta]xyz[[rows, columns, 1]], Desiredconstant\[Theta]xyz[[rows, columns, 2]], Desiredconstant\[Theta]xyz[[rows, columns, 3]]}; Desiredconstant\[Theta]yxRotated[[rows, columns]] = {Desiredconstant\[Theta]xyzRotated[[rows, columns, 2]], Desiredconstant\[Theta]xyzRotated[[rows, columns, 1]]}; DesiredyxPoints[[rows, columns]] = {y, Sqrt[a^2 (1 - y^2/b^2)] - \[CapitalDelta]a, Desiredconstant\[Theta][[rows, columns, 1]], Desiredconstant\[Theta][[rows, columns, 2]]}; ] ]; ClearAll[\[Theta], \[Phi]]
The parameter's range changes from the DC frame with 0<t<2 , since
In the frame of the wires, the x axis no longer is aligned with the semi-major axis, therefore for
in the DC frame
In[153]:= ClearAll[X, \[Theta]]; \[Theta] = 40; X = X /. Solve[(X + \[CapitalDelta]a)^2/a^2 == 1 && X > 0, X] Out[155]= {1.68318}
This gives the (x' , y')=(1.68318, 0) in the DC frame for
The slope m, with respect to x, is found as =9.514
Slope point form gives
SemiMajorAxis = ContourPlot[Y == 0, {Y, -1, 1}, {X, 0, 1.8}, Frame -> {True, True, False, False}, PlotLabel -> "Right side limit of DC as a function of X and Y", FrameLabel -> {"y (meters)", "x (meters)"}, ContourStyle -> Red, PlotLegends -> Automatic]; SemiMajorAxisRotated = ContourPlot[X == 9.614 Y, {Y, -2, 2}, {X, 0, 1.8}, Frame -> {True, True, False, False}, PlotLabel -> "Right side limit of DC as a function of X and Y", FrameLabel -> {"y (meters)", "x (meters)"}, ContourStyle -> Blue, PlotLegends -> Automatic];
The center
In[161]:= rFromXtoY.{\[CapitalDelta]a, 0, 0} // MatrixForm Out[161]//MatrixForm= \!\( TagBox[ RowBox[{"(", "", TagBox[GridBox[{ {"1.0760024073650314`"}, { RowBox[{"-", "0.11309241017012851`"}]}, {"0.`"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\)
The vertex
In[162]:= rFromXtoY.{1.6831832367824053`, 0, 0} // MatrixForm Out[162]//MatrixForm= \!\( TagBox[ RowBox[{"(", "", TagBox[GridBox[{ {"1.6739625828969429`"}, { RowBox[{"-", "0.17594055713873974`"}]}, {"0.`"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\)
The slope m, with respect to x, is found as
Slope point form gives
SemiMajorAxisRotatedReverse = ContourPlot[X == -9.514 Y, {Y, -2, 2}, {X, 0, 1.8}, Frame -> {True, True, False, False}, PlotLabel -> "Right side limit of DC as a function of X and Y", FrameLabel -> {"y (meters)", "x (meters)"}, ContourStyle -> Green, PlotLegends -> Automatic];
Graphing the frame of the sector and the wires within the sector,
DataXY = Table[ ListPlot[{constant\[Theta]yx[[i]]}, PlotStyle -> Black, AxesLabel -> {"y", "x"}, PlotLabel -> "DC Wire for Constant \[Theta] as a Function of \[Phi]"], {i, 1, 36}]; DataXYRotated = Table[ListPlot[{constant\[Theta]yxRotated[[i]]}, PlotStyle -> Black, AxesLabel -> {"y'", "x'"}, PlotLabel -> "DC Wire for Constant \[Theta] as a Function of \[Phi]"], {i, 1, 36}]; DesiredDataXY = Table[ListPlot[{Desiredconstant\[Theta]yx[[i]]}, PlotStyle -> Black, AxesLabel -> {"y", "x"}, PlotLabel -> "DC Wire for Constant \[Theta] as a Function of \[Phi]"], {i, 1, 36}]; DesiredDataXYRotated = Table[ListPlot[{Desiredconstant\[Theta]yxRotated[[i]]}, PlotStyle -> Black, AxesLabel -> {"y'", "x'"}, PlotLabel -> "DC Wire for Constant \[Theta] as a Function of \[Phi]"], {i, 1, 36}]; ClearAll[\[Theta]]; \[Theta] = 40; ellipse40 = ContourPlot[(x + \[CapitalDelta]a)^2/a^2 + y^2/b^2 == 1, {y, -1, 1}, {x, 1.5, 1.7}, Frame -> {True, True, False, False}, PlotLabel -> "X' & Y' position on DC sector plane as a function of \[Phi] for \ \[Theta]=40\[Degree]", FrameLabel -> {"y' (meters)", "x' (meters)"}, ContourStyle -> Red, PlotLegends -> Automatic]; ellipse40Rotated = ContourPlot[(X Cos[6 \[Degree]] + Y Sin[6 \[Degree]] + \[CapitalDelta]a)^2/ a^2 + (-X Sin[6 \[Degree]] + Y Cos[6 \[Degree]])^2/b^2 == 1, {Y, -1, 1}, {X, 1.4, 1.7}, Frame -> {True, True, False, False}, PlotLabel -> "X'' & Y'' position on DC sector wires a function of \[Phi] for \ \[Theta]=40\[Degree]", FrameLabel -> {"y'' (meters)", "x'' (meters)"}, ContourStyle -> Red, PlotLegends -> Automatic]; Show[ellipse40, Table[ContourPlot[ xWire == Tan[6 \[Degree]] yWire + x0forWires[number], {yWire, -1, 1}, {xWire, 1.5, 1.7}, FrameLabel -> {"y(meters)", "x(meters)"}], {number, 89, 109}], Table[ContourPlot[ xWire == Tan[6 \[Degree]] yWire + x0forWireMiddles[number2], {yWire, -1, 1}, {xWire, 1.5, 1.7}, ContourStyle -> {Dashing[Large]}], {number2, 89, 109}], DataXY[[36]], DesiredDataXY[[36]], left, right, SemiMajorAxis, \ SemiMajorAxisRotatedReverse] Show[ellipse40Rotated, Table[ContourPlot[ xWire == Cos[6 \[Degree]] x0forWires[number], {yWire, -1, 1.2}, {xWire, 1.4, 1.7}, FrameLabel -> {"y(meters)", "x(meters)"}], {number, 89, 109}], Table[ContourPlot[ xWire == Cos[6 \[Degree]] x0forWireMiddles[number2], {yWire, -1, 1.2}, {xWire, 1.4, 1.7}, ContourStyle -> {Dashing[Large]}], {number2, 89, 109}], DataXYRotated[[36]], DesiredDataXYRotated[[36]], rightRotated, leftRotated, \ SemiMajorAxisRotated, SemiMajorAxis, SemiMajorAxisRotatedReverse] ClearAll[\[Theta]];