[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
Solved

# Polar coordinates drawing

Posted on 2008-06-09
Medium Priority
1,162 Views
Hi,

Still trying to get a part of a programme working following up this question http://www.experts-exchange.com/Other/Math_Science/Q_23447301.html.

I'm having a problem seperating the circle into segments.  I'm wanting to draw a line every 3.6 degrees.  Or even better draw from 0 on left to 100 on right (image 1) with appropriate 100 segment degrees inbetween.

My problem is that when I set theta to different values in my code (attached) I get different angles drawn!

Code at the moment draws all the lines on top of each other as this was how I noticed that it was drawing the lines at the correct degree segments!

Any suggestions on whats going on here? Or perhaps how once overcome this problem how I can start to work out my desired result!

p.s. Sorry if in wrong area!

Thanks
James
``````int iCurrentRowStart = 0;
for (int x = 0; x < m_data.header.iNeuron; x++) {
for (int y = iCurrentRowStart; y < m_data.header.iNeuron; y++) {
if (x != y) {
double iIncrease = 3.6; //360 / m_data.header.iWin;
for (int i = 0; i < m_data.header.iWin; i++) {
double dTheta = 180; //(iIncrease * i) + 8;
// work out beggning of line on outside of inner circle
double xPos1 = m_pStartX + (m_iMiddle * Math.cos(dTheta));
double yPos1 = m_pStartY + (m_iMiddle * Math.sin(dTheta));
// work out end of line on outside of outer circle
double xPos2 = xPos1 + ((m_data.afNorm[x][y][i]*m_iScale)) * Math.cos(dTheta);
double yPos2 = yPos1 + ((m_data.afNorm[x][y][i]*m_iScale)) * Math.sin(dTheta);

if (m_data.afNorm[x][y][i] == m_data.afPeaks[x][y]) {
if (i >= 50){
gIn.setColor(Color.RED);
} else {
gIn.setColor(Color.BLUE);
}
} else {
gIn.setColor(Color.BLACK);
}
gIn.draw(new Line2D.Double(xPos1, yPos1, xPos2, yPos2));
}
}
}
iCurrentRowStart++;
}
``````
desired.jpg
0.jpg
90.jpg
180.jpg
0
Question by:James_h1023
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 4

LVL 4

Accepted Solution

anmalaver earned 1500 total points
ID: 21746635
Hi

Multiply by 0.01745329251994 to convert.
0

LVL 4

Author Comment

ID: 21746657

So simple!  How annoying.

It is very important that these are very accurate so they can be exactly on top of each other.  Would it be possible to do what i'm wanting in radians or is the above going to be accurate?

Radians are a bit rusty for me - 2(pie) in a circle, so I could divide that by 100 still!?
0

LVL 4

Assisted Solution

anmalaver earned 1500 total points
ID: 21746689
Calc an increment to the angle in radians

increment = (3 * pi / 2) steps;
and do the loop from -pi/2 to pi+pi/4
0

LVL 4

Author Comment

ID: 21746746
Sorry not quite with you ... whats steps?
And the loop bit, are you meaning the line in my code:
double dTheta = .....
0

LVL 4

Expert Comment

ID: 21746754
Steps means the number of subdivisions you want; 100 in this case.
0

LVL 4

Expert Comment

ID: 21746761
Theta will be in the loop from -pi/2 to pi+pi/4
0

LVL 4

Author Comment

ID: 21746798
Ah cool.
Got it - Thanks very much for quick replies :)

James
0

LVL 53

Expert Comment

ID: 21749210
Did you get this working ? Because the accepted replies are not very accurate.

The lower limit should be -PI/4 and not -PI/2.
The step size should be calculated by dividing by the number of steps (100), not multiplying.
The step size should be negative because you're going clockwise.
0

LVL 4

Author Comment

ID: 21754003
Yeh, I resorted to the multiple by pi/180 although figured out the others with some common sense and tweaking :)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

We are taking giant steps in technological advances in the field of wireless telephony. At just 10 years since the advent of smartphones, it is crucial to examine the benefits and disadvantages that have been report to us.
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…
###### Suggested Courses
Course of the Month14 days, left to enroll