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
dalehanzelkaAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.