write a python program
TASK 1: Animated Sine Curve
Write a Python program one.py with PyOpenGL to display an animation of sine function y=Asin(x+B), satifying the following requirements:
- The window application's size is (600, 600), and its upper-left corner is at (250, 250) on the screen;
- The window application's title is Animated Sine Curve.
- The ranges of x and y are [-4, 4] (x is in radians);
- The amplitude A is a random float in [1, 2], and it is updated each time the window application restarts;
- The phase shift B is a float; it is initialized as 0, and incremented by 0.01 each time the screen refreshes;
- The two axes are drawn in white, with an arrow towards the positive direction at the end of each axis;
- The sine curve is drawn in yellow.
- Orthogonal projection is used in this task.
The following figure illustrates the expected window application.
TASK 2: Clamped B-Spline
Write a Python program two.py with PyOpenGL to display a clamped B-spline, satifying the following requirements:
- The window application's size is (550, 550), and its upper-left corner is at (150, 150) on the screen;
- The window application's title is Special B-Splines.
- The program reads a text file named control-points.txt, including an x,y coordinate pair in each line as a control point, in the same folder;
- Control points are drawn with size 4 in green.
- Based on the control points, a clamped B-spline is drawn.
- P(t)'s color, mixed by red and blue, depends on its curvature (R = curvature / 5, G = 0.0, B = 1 - curvature / 5);
- Curvature is clipped by [0, 5].
- Orthogonal projection is used in this task.
The following figure illustrates the expected window application, reading the sample control-points.txt provided.
TASK 3: Hexagonal Pyramid
Write a Python program three.py with PyOpenGL to display a 3D hexagonal pyramid, satifying the following requirements:
- The window application's size is (400, 400), and its upper-left corner is at (100, 100) on the screen;
- The window application's title is Hexagonal Pyramid.
- The program reads a text file named pyramid-params.txt, including one line as x,y,z,H,R, in the same folder, where x, y and z are the coordinates of the top vertex v, H is the height, and R is the radius; we assume the top vertex v and the base centroid c are on the same vertical axis, and c is always under v; the distance between c and any base vertex vi is always R.
- Based on the above information, a hexagonal pyramid is drawn.
- All faces are randomly and differently colored, except for the base in white.
- When the key R is pressed, the radis increases by 0.01 and the hexagonal pyramid is redrawn.
- When the key H is pressed, the height decreases by 0.01 and the hexagonal pyramid is redrawn.
- The hexagonal pyramid is static by default; When the key X, Y or Z is pressed, the hexagonal pyramid toggles between being static and rotating 1 degree/refresh along the corresponding axis (i.e., the key X corresponds to the x axis), taking c as the origin.
- Perspective projection is used in this task (FoV is 90 degrees towards the y-axis; Camera looks at the origin and uses the y-axis direction as the up-vector).
The following figure illustrates the expected window application, reading the sample pyramid-params.txt provided.
6 years ago
10
Answer(0)
other Questions(10)
- Week 1 Discussion 1
- week7 350
- finance book
- analysis
- accounting
- Develop a Strategic Business Plan for a New Venture Start-up companies are more important in bringing products and services to market. In response to new technology, new and innovative businesses are taking over the markets of those older companies too sl
- Prepare Your Project Charter
- Microeconomics Discussion Short Essay
- Sensory Worksheet
- week4