Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 324
  • Last Modified:

How can I use drawPolygon with decimal numbers?

I am very new to this object oriented type programming, most of what I have done is in PERL, so forgive my ignorance.

I am using drawPolygon just fine with whole numbers. I need to introduce numbers with decimals in to the routine. How would I go about this? I've tried changing the int to double and float, but keep getting errors during the compile.
Thanks
-Dale
0
dalehanzelka
Asked:
dalehanzelka
  • 3
1 Solution
 
jimmackCommented:
You just need to cast your doubles (or floats) before passing them into the method.  Unfortunately, I don't *think* there's a way to simply cast an array of doubles to an array of ints, like this:

double[] myDoubles = {1.1, 2.2, 3.3};
int[] myInts = (int[])myDoubles;

In this case, you would need to do:

int[] myInts = new int[myDoubles.length];
for (int i = 0; i < myDoubles.length; i++)
{
    myInts[i] = (int)myDoubles[i];
}

For the last parameter, I'm guessing that your number of points is already an int ;-)
0
 
delphi3Commented:
Hi dalehanzelka,

If this is of any help in using decimals to draw geometric shapes??

Here is an application that draws a 2 figures with some decimals in one of them that I happen
to have in my files.

And it is not pure OOP  but has some math with it.

Delphi3



package applicationpolygontest;

import java.awt.*;
import javax.swing.*;

public class polygonApplic {
  public polygonApplic() {
  }

  public static void main(String[] args) {
    polygonApplic polygonApplic1 = new polygonApplic();
    PolygonFrame frame = new PolygonFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
  }
}

/**
   A frame with a message panel
 */
class PolygonFrame
    extends JFrame {
  public PolygonFrame() {
    setTitle("Polygon Test");
    setSize(WIDTH, HEIGHT);
    // add panel to frame
    PolygonPanel panel = new PolygonPanel();
    Container contentPane = getContentPane();
    contentPane.add(panel);
  }

  public static final int WIDTH = 200;
  public static final int HEIGHT = 300;
}

/**
   A panel that shows  polygons
 */
class PolygonPanel
    extends JPanel {

  public void paint(Graphics g) {
    // a triangle
    int factor = 12; // an enlargement factor
    int[] TriPts = {
        1 * factor, 1 * factor, 3 * factor, 4 * factor, 2 * factor, 6 * factor};
    g.setColor(Color.red);

    g.drawLine(TriPts[0], TriPts[1], TriPts[2], TriPts[3]);
    g.drawLine(TriPts[2], TriPts[3], TriPts[4], TriPts[5]);
    g.drawLine(TriPts[4], TriPts[5], TriPts[0], TriPts[1]);

    // a pentagon
    int PentaPts = 6;
    int PentaPtsX[] = new int[PentaPts];
    // since it is a circular motion here calling an extra to close up the figure
    int PentaPtsY[] = new int[PentaPts];
    g.setColor(Color.blue);
    int rad = 50; // an enlargement factor
    int x1, y1, x2, y2;
    for (int i = 0; i < PentaPts; i++) {
      System.out.println(i + ". " + "Cos X = " +
                         rad * Math.cos(2 * Math.PI / 5 * i));
      System.out.println(i + ". " + "Sine Y = " +
                         rad * Math.sin(2 * Math.PI / 5 * i));

      x1 = (int) (rad * Math.cos(2 * Math.PI / 5 * i));
      y1 = (int) (rad * Math.sin(2 * Math.PI / 5 * i));
      PentaPtsX[i] = x1;
      PentaPtsY[i] = y1;
    }
    System.out.println(" ");
    // Translate to center at 100,150;
    for (int ic = 0; ic < PentaPts - 1; ic++) {
      if (ic == 0) {
        g.setColor(Color.red);
      }
      if (ic == 1) {
        g.setColor(Color.blue);
      }
      if (ic == 2) {
        g.setColor(Color.green);
      }
      if (ic == 3) {
        g.setColor(Color.ORANGE);
      }
      if (ic == 4) {
        g.setColor(Color.MAGENTA);
      }
      g.drawLine(100 + PentaPtsX[ic], 150 + PentaPtsY[ic],
                 100 + PentaPtsX[ic + 1], 150 + PentaPtsY[ic + 1]);
    }
    g.setColor(Color.CYAN);
    g.drawOval(50, 100, 100, 100);
  }
}
0
 
dalehanzelkaAuthor Commented:
I found that using the graphics2D g2, I could accomplish what I needed, but your suggestion did work also.

Thanks,
-Dale
0
 
delphi3Commented:

Glad to help.

Delphi3
0
 
delphi3Commented:
dalehanzelka,

Thanks for the points and grade.

Delphi3
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now