\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\feet{\unit{ft}} \newcommand\mile{\unit{mi}} \newcommand\mi{\mile} % % Volume \newcommand\gallon{\unit{gal}} % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Temperature \newcommand\celsius{\unit{^{\circ}C}} \newcommand\C{\unit{\celsius}} \newcommand\fahrenheit{\unit{^{\circ}F}} \newcommand\F{\unit{\fahrenheit}} \newcommand\kelvin{\unit{\K}} \newcommand\K{\unit{\kelvin}}\\% Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Torque \newcommand\ozin{\unit{oz}\text{-}\unit{in}} \newcommand\newtonmeter{\unit{N\text{-}m}}\end{aligned}\end{align} \]

Apr 16, 2025 | 258 words | 3 min read

7.2.2. Spiral#

Instructions#

Starting from the spiral_template.py, write a function named interpolate_point. This function should take two points \(A\) and \(B\), and a coefficient \(c \in [0,1]\) as arguments, and return a new point \(c\) of the way from \(A\) to \(B\). The first two arguments should be tuples of \(x\) and \(y\) coordinates, and the third a float for the coefficient \(c\). The function should return the new point’s coordinates as a tuple. For instance, if \(c = 0\) the new point equals \(A\), if \(c = 1\) it equals \(B\), and if \(c = 0.5\) it’s halfway between \(A\) and \(B\). The new point’s coordinates can be calculated as:

(7.1)#\[x_{new} = x_{A} + c * (x_{B} - x_{A})\]
(7.2)#\[y_{new} = y_{A} + c * (y_{B} - y_{A})\]

Make sure to define this function outside your main function.

Next, in your main function, draw a square centered at the origin with a side length of \(200\). Then starting from the north-east corner, draw a line to the point \(0.1\) of the way along the bottom line from the south-east to the south-west corner, using interpolate_point to calculate the coordinates of this point. Continue, turning clockwise, and drawing lines to the point \(0.1\) of the way along the first intersected line, until the line length is less than \(2\). Fig. 7.1 shows the pattern after drawing the first 5 lines of the spiral. The completed spiral pattern is shown in the sample output. It will be helpful to store each point in the spiral as they are calculated, so they can be used in subsequent calculations.

../../../../../_images/Case_1_spiral_after_5_steps.png

Fig. 7.1 The spiral pattern after drawing the first 5 lines.#

Sample Output#

Compare your program’s output to the provided sample output.

Case_1_spiral.png

Fig. 7.2 Case_1_spiral.png#

Deliverables#

Save your finished program as spiral_login.py, replacing login with your Purdue login. Then submit it along with all the deliverables listed in Table 7.2 below.

Table 7.2 Deliverables#

Deliverable

Description

spiral_login.py

Your finished program.

Screenshot(s)

PNG(s) capturing the test case.