Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

PP 10.9 GRAPH ** in Java** Study the attached solution to Programming project 10.9. GRAPH_10.9.zip Note that the slope (coefficient b) does not turn negative

PP 10.9 GRAPH ** in Java**

Study the attached solution to Programming project 10.9. GRAPH_10.9.zipimage text in transcribedimage text in transcribed

Note that the slope (coefficient b) does not turn negative when the slider is moved to a negative number.

1. Can you fix this problem with the code? (50 points)

2. Describe accurately and in detail what the overall effect on the graph of the equation is?(50 points)

I have attached the provided code/zip file.

I have bolded the imports and class for seperation for the four java classes

Please bold your change to the code for easier evaluation

Thanks!

public class Equation { private int a, b, c; public final String SQUARED = "\u00B2"; //------------------------------------------------------------------ // Sets up the default coeficients of this equation: // a*x^2 + b*x + c //------------------------------------------------------------------ public Equation() { a = b = c = 0; } //------------------------------------------------------------------ // Sets up the coeficients of this equation as specified. //------------------------------------------------------------------ public Equation (int aValue, int bValue, int cValue) { a = aValue; b = bValue; c = cValue; } //------------------------------------------------------------------ // Computes the current value of this equation. //------------------------------------------------------------------ public double computeValue(double x) { return a*x*x + b*x + c; } //------------------------------------------------------------------ // Returns a string representation of this equation. //------------------------------------------------------------------ public String toString() { StringBuffer equation = new StringBuffer(); if (a==0 && b==0 && c==0) equation.append("0"); else { if (a != 0) { if (a==-1) equation.append("-"); else if (a!=1) equation.append(a); equation.append( "x" + SQUARED); } if (b != 0) { if (b  2) { char ch = equation.charAt(1); if (ch=='+') { equation.deleteCharAt(0); equation.deleteCharAt(0); } } return equation.toString(); } } 

import javax.swing.*; public class EquationGraph { //----------------------------------------------------------------- // Creates and presents the program frame. //----------------------------------------------------------------- public static void main(String[] args) { JFrame frame = new JFrame("Equation Graph"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new EquationGraphPanel()); frame.pack(); frame.setVisible(true); } } 

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.border.LineBorder; public class EquationGraphPanel extends JPanel {  private JSlider aSlider; private JSlider bSlider; private JSlider cSlider; private EquationViewportPanel display; private JLabel equationLabel; private final String EQUATION_SUBSTRING = "Graph of equation y = "; private final int MIN_VALUE = -5; private final int MAX_VALUE = 5; private final int INIT_VALUE = 0; private final int TICK_SPACING = 5; private final int MINOR_TICK_SPACING = 1; //----------------------------------------------------------------- // Sets up the panel. //----------------------------------------------------------------- public EquationGraphPanel() { setLayout(new BorderLayout()); add(getSliderPanel(), BorderLayout.WEST); display = new EquationViewportPanel(); add(display, BorderLayout.CENTER); equationLabel = new JLabel(EQUATION_SUBSTRING + 0); equationLabel.setHorizontalAlignment(SwingConstants.CENTER); equationLabel.setFont(new Font("Dialog", Font.BOLD, 16)); add(equationLabel, BorderLayout.NORTH); } //----------------------------------------------------------------- // Creates the sliders and slider panel. //------------------------------------------------------------- private JPanel getSliderPanel() { SliderMouseListener changed = new SliderMouseListener(); aSlider = new JSlider(JSlider.HORIZONTAL, MIN_VALUE, MAX_VALUE, INIT_VALUE); aSlider.setPaintTicks(true); aSlider.setPaintLabels(true); aSlider.setMajorTickSpacing(TICK_SPACING); aSlider.setMinorTickSpacing(MINOR_TICK_SPACING); aSlider.setSnapToTicks(true); aSlider.addMouseListener(changed); bSlider = new JSlider(JSlider.HORIZONTAL, MIN_VALUE, MAX_VALUE, INIT_VALUE); bSlider.setPaintTicks(true); bSlider.setPaintLabels(true); bSlider.setMajorTickSpacing(TICK_SPACING); bSlider.setMinorTickSpacing(MINOR_TICK_SPACING); bSlider.setSnapToTicks(true); bSlider.addMouseListener(changed); cSlider = new JSlider(JSlider.HORIZONTAL, MIN_VALUE, MAX_VALUE, INIT_VALUE); cSlider.setPaintTicks(true); cSlider.setPaintLabels(true); cSlider.setMajorTickSpacing(TICK_SPACING); cSlider.setMinorTickSpacing(MINOR_TICK_SPACING); cSlider.setSnapToTicks(true); cSlider.addMouseListener(changed); JPanel aPanel = new JPanel(); aPanel.setLayout(new BoxLayout(aPanel, BoxLayout.Y_AXIS)); aPanel.setBorder(new LineBorder(Color.black)); aPanel.add(new JLabel("value of 'a'")); aPanel.add(aSlider); JPanel bPanel = new JPanel(); bPanel.setLayout(new BoxLayout(bPanel, BoxLayout.Y_AXIS)); bPanel.setBorder(new LineBorder(Color.black)); bPanel.add(new JLabel("value of 'b'")); bPanel.add(bSlider); JPanel cPanel = new JPanel(); cPanel.setLayout(new BoxLayout(cPanel, BoxLayout.Y_AXIS)); cPanel.setBorder(new LineBorder(Color.black)); cPanel.add(new JLabel("value of 'c'")); cPanel.add(cSlider); JPanel sliderPanel = new JPanel(); sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.Y_AXIS)); JLabel title = new JLabel("ax\u00B2 + bx + c"); title.setFont(new Font("Dialog", Font.BOLD, 16)); title.setHorizontalAlignment(SwingConstants.CENTER); sliderPanel.add(title); sliderPanel.add(new JLabel("Select values for each coefficient:")); sliderPanel.add(Box.createVerticalGlue()); sliderPanel.add(aPanel); sliderPanel.add(Box.createVerticalGlue()); sliderPanel.add(bPanel); sliderPanel.add(Box.createVerticalGlue()); sliderPanel.add(cPanel); return sliderPanel; } //----------------------------------------------------------------- // Update and equation label. //------------------------------------------------------------- private void updateEquationLabel (Equation equation) { equationLabel.setText (EQUATION_SUBSTRING + equation.toString()); } //******************************************************************** // Represents the mouse listener class for the sliders. //******************************************************************** private class SliderMouseListener extends MouseAdapter { //----------------------------------------------------------------- // Redraws the graph. //----------------------------------------------------------------- public void mouseReleased(MouseEvent event) { Equation equation = new Equation(aSlider.getValue(), bSlider.getValue(), cSlider.getValue()); display.setEquation(equation); updateEquationLabel(equation); repaint(); } } } 

import java.awt.*; import javax.swing.JPanel; import javax.swing.border.LineBorder; public class EquationViewportPanel extends JPanel {  private final int X_MIN = -10, Y_MIN = -10, X_MAX = 10, Y_MAX = 10; private final int REAL_WORLD_WIDTH = X_MAX - X_MIN; private final int REAL_WORLD_HEIGHT = Y_MAX - Y_MIN; private final double TICK_LENGTH = 0.2; private Equation equation; //----------------------------------------------------------------- // Constructor: Sets up this panel. //----------------------------------------------------------------- public EquationViewportPanel() { equation = new Equation(); setBorder(new LineBorder(Color.black, 4)); setPreferredSize(new Dimension(500, 500)); } //----------------------------------------------------------------- // Sets the equation. //----------------------------------------------------------------- void setEquation(Equation newEquation) { equation = newEquation; } //----------------------------------------------------------------- // Converts world X coordinate to screen X coordinate. //----------------------------------------------------------------- private int convertX(double x) { double offset = x - X_MIN; double result = offset * getSize().width / REAL_WORLD_WIDTH; return (int) Math.round(result); } //----------------------------------------------------------------- // Converts world Y coordinate to screen Y coordinate. //----------------------------------------------------------------- private int convertY(double y) { double offset = Y_MAX - y; double result = offset * getSize().height / REAL_WORLD_HEIGHT; return (int) Math.round(result); } //----------------------------------------------------------------- // Draws a line in world coordinates on the screen. //----------------------------------------------------------------- private void drawScreenLine(Graphics page, double xMin, double yMin, double xMax, double yMax) { page.drawLine(convertX(xMin), convertY(yMin), convertX(xMax), convertY(yMax)); } //----------------------------------------------------------------- // Draws a point in world coordinates on the screen. //----------------------------------------------------------------- private void drawScreenPoint(Graphics page, double x, double y) { page.drawLine(convertX(x), convertY(y), convertX(x), convertY(y)); } //----------------------------------------------------------------- // Draws the graph axes and equation. //----------------------------------------------------------------- public void paintComponent(Graphics page) { page.setColor(Color.white); page.fillRect(0,0,getSize().width, getSize().height); // draw the x and y axis page.setColor(Color.pink); drawScreenLine(page, X_MIN, 0, X_MAX, 0); drawScreenLine(page, 0, Y_MIN, 0, Y_MAX); // draw tick marks for (int x=X_MIN; x 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Professional Microsoft SQL Server 2014 Integration Services

Authors: Brian Knight, Devin Knight

1st Edition

1118850904, 9781118850909

More Books

Students also viewed these Databases questions