campy.graphics.gmath module¶
Utility functions for working with 2D geometry degrees, vectors, and constants.
Most Python libraries (such as the math
module) expect angles to be specified
in radians. While this is a good convention, new students may have trouble using
radians, so this module provides degreeaccepting variants of the standard trig
functions, as well as a utility to convert between radians and degrees.
Students often also represent 2D vectors by their components, so we also provide conversions to vector magnitude and vector angle.
The mathematical constants PI
and E
are also exported so that students
don’t have to import the separate math module for those constants.
With all of these functions, the numerical precision is only as accurate as that
provided by the underlying math
module.

campy.graphics.gmath.
PI
= 3.141592653589793¶ The mathematical constant e, equal to the base of the natural logarithm.

campy.graphics.gmath.
to_degrees
(radians)[source]¶ Convert an angle from radians to degrees.
Usage:
print(to_degrees(PI)) # => 180.0 print(to_degrees(PI / 2)) # => 90.0
There is no restriction of the domain of this function, but that also means that the codomain is unrestricted. As a concrete example:
print(to_degrees(PI)) # => 180.0 print(to_degrees(4 * PI)) # => 720.0
Parameters: radians – An angle (in radians) Returns: The same angle (in degrees)

campy.graphics.gmath.
to_radians
(degrees)[source]¶ Convert an angle from degrees to radians.
Usage:
print(to_radians(180.0)) # => 3.141592653589793 print(to_radians(90.0)) # => 1.5707963267948966
There is no restriction of the domain of this function, but that also means that the codomain is unrestricted. As a concrete example:
print(to_radians(180.0)) # => 3.141592653589793 print(to_radians(720)) # => 12.566370614359172
Parameters: degrees – An angle (in degrees) Returns: The same angle (in radians)

campy.graphics.gmath.
sin_degrees
(angle)[source]¶ Return the trigonometric sine of an angle (in degrees).
Usage:
print(sin_degrees(30)) # => 0.49999999999999994 print(sin_degrees(0)) # => 0.0 print(sin_degrees(45.0)) # => 0.7071067811865475
Parameters: angle – An angle (in degrees) Returns: The sine of the given angle

campy.graphics.gmath.
cos_degrees
(angle)[source]¶ Return the trigonometric cosine of an angle (in degrees).
Usage:
print(cos_degrees(60)) # => 0.5000000000000001 print(cos_degrees(90)) # => 6.123233995736766e17 print(cos_degrees(45.0)) # => 0.7071067811865476
Parameters: angle – An angle (in degrees) Returns: The cosine of the given angle

campy.graphics.gmath.
tan_degrees
(angle)[source]¶ Return the trigonometric tangent of an angle (in degrees).
Usage:
print(tan_degrees(0)) # => 0.0 print(tan_degrees(90)) # => 1.633123935319537e+16 print(tan_degrees(45.0)) # => 0.9999999999999999
Parameters: angle – An angle (in degrees) Returns: The tangent of the given angle

campy.graphics.gmath.
vector_magnitude
(x, y)[source]¶ Compute the magnitude of a vector given by two components.
To compute the magnitude of vector with two components:
print(vector_magnitude(3, 4)) # => 5.0
To compute the magnitude of a
GPoint
:pt = GPoint(3, 4) print(vector_magnitude(*pt)) # => 5.0
Parameters:  x – xcoordinate of vector
 y – ycoordinate of vector
Returns: magnitude of the vector (x, y)

campy.graphics.gmath.
vector_angle
(x, y)[source]¶ Return the angle (in degrees) from the origin to the given point.
The angle is measured counterclockwise from the positive xaxis, as is standard.
This function accounts for the fact that, in our graphical coordinate system, the yaxis is flipped (with respect to the traditional Cartesian plane). That is, in the graphical coordinate system, the ycoordinate of a point increases as that point descends on the screen.
Usage:
print(vector_angle(3, 3)) # => 45.0 print(vector_angle(3, 3 * math.sqrt(3))) # => 60.00000000000001 print(vector_angle(3 * math.sqrt(3), 3)) # => 29.999999999999996
The returned angles in these examples are negative because the ycoordinate represents a point in the fourth quadrant.
Parameters:  x – xcoordinate of point
 y – ycoordinate of point
Returns: angle (in degrees) from (0, 0) to (x, y)

campy.graphics.gmath.
count_digits
(n, base=10)[source]¶ Count the number of digits in a number in some base.
Any nonintegral part of the number is discarded:
count_digits(3.1415)
is the same ascount_digits(3)
.The provided n must be finite and the provided base must be a positive integer, otherwise an error is raised.
Usage:
count_digits(4) # => 1 count_digits(41) # => 2 count_digits(413) # => 3 count_digits(9.9) # => 1 count_digits(10.1) # => 2 count_digits(15) # => 2 count_digits(314.15) # => 3 count_digits(3, base=2) # => 2 count_digits(4, base=2) # => 3 count_digits(8, base=3) # => 2 count_digits(41, base=5) # => 3
Invalid Usage:
count_digits(float('inf')) # raises error count_digits(5, base=3) # raises error count_digits(5, base=2.2) # raises error
Parameters:  n – number whose digits to count
 base – base system to use
Returns: the number of digits of n when written in the given base.