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

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.

Commented:
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
Commented:
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);
PolygonPanel panel = new PolygonPanel();
Container contentPane = getContentPane();
}

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

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

Author Commented:
I found that using the graphics2D g2, I could accomplish what I needed, but your suggestion did work also.

Thanks,
-Dale
0
Commented:

Delphi3
0
Commented:
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.