Calculating dr/dtheta at an arbitrary point and angle

  • Context: Graduate 
  • Thread starter Thread starter haytil
  • Start date Start date
  • Tags Tags
    Angle Point
Click For Summary
SUMMARY

This discussion focuses on calculating the derivative dr/dΘ at an arbitrary point in polar coordinates for a raytracing simulation. The user initially attempts to convert polar coordinates to Cartesian coordinates to perform the calculation, which is inefficient and slow due to the use of trigonometric functions and square roots. The conversation reveals the need for a more elegant solution that directly utilizes polar coordinates, emphasizing the importance of understanding the relationship between r and Θ in this context.

PREREQUISITES
  • Understanding of polar coordinates and their derivatives
  • Familiarity with raytracing algorithms
  • Basic knowledge of trigonometric functions
  • Experience with mathematical modeling in programming
NEXT STEPS
  • Research polar coordinate derivatives and their applications in computer graphics
  • Explore optimization techniques for raytracing algorithms
  • Learn about mathematical modeling using polar coordinates
  • Investigate alternative methods for calculating derivatives without Cartesian conversion
USEFUL FOR

Mathematicians, computer graphics developers, and anyone involved in optimizing raytracing simulations using polar coordinates.

haytil
Messages
7
Reaction score
0
In writing a computer raytracing simulation using polar coordinates, I've come across a simple problem: I need to calculate the value of dr/dΘ at an arbitrary point (in polar coordinates), pointing in an arbitrary direction (given as an angle).

So if point 1 (p1) is given by the coordinates (r1, Θ1), and I create a ray from that point, pointing at an angle Θ2 with respect to p1 (not with with respect to the origin), I need to know the value of dr/dΘ along that ray at that starting point.

Of course, Cartesian coordinates is much simpler: dx/dy as a function of Θ2 does not depend on the values of x and y at the point you're trying to calculate from. In polar coordinates, however, given an arbirtrary value Θ2, dr/dΘ will change depending on what the value of r is at the point you're trying to calculate from. Beyond that, however, I do not know the explicit formula that I need. So my current algorithm/equation relies on converting to cartesian coordinates and then doing the calculation.

It is as follows:

-----------------------------------
dx = cos(Θ2)
dy = sin(Θ2)

x1 = r1 * cos(Θ1)
y1 = r1 * sin(Θ1)

(This assumes dx << x1 and dy << y1. If not, dx and dy are divided by a large constant)

rT = sqrt( (x1+dx)^2 + (y1+dy)^2 )
ΘT = arctan( (y1 + dy) / (x1 + dx) )

Add 2pi or pi to thetaT as necessary (depending on which quadrant the point p1 is in)

dr = rT - r1
dΘ = ΘT - Θ1

dr/dΘ = (rT - r1) / (ΘT - Θ1)
-----------------------------------

This algorithm is undesirable both because it is inelegant (in its roundabout way of first converting to cartesian coordinates to do the calculation) and slow to run on the machine (trig functions and square roots, when unnecessary, slow things down a great deal, and I'm having many problems with computer-related precision limits which can likely be avoided with a more straightforward algorithm).

I'm sure there's a much simpler solution, involving only polar coordinates, and I'm frustrated that such a seemingly simple problem is stumping me. Can anyone help out?
 
Last edited:
Physics news on Phys.org
I don't understand what you mean by "pointing in some arbitrary direction". If r is a function of \theta, then its derivative at any point is a single number, not a vector, and does not "point" in any direction. In order to have a different derivative in different directions, you would have to have a function of at least two variables, say f(r,\theta), not r(\theta).
 
HallsofIvy said:
I don't understand what you mean by "pointing in some arbitrary direction". If r is a function of \theta, then its derivative at any point is a single number, not a vector, and does not "point" in any direction. In order to have a different derivative in different directions, you would have to have a function of at least two variables, say f(r,\theta), not r(\theta).

I'm sorry, I'm not being very clear. The scenario I'm trying to handle is quite simple, I'm just not explaining it right. Let me try again:


Imagine a straight line that passes through the point (r1, Θ1) and that the slope of the line at that point is sin(ΘT)/cos(ΘT).

What is the value of dr/dΘ of the line at that point? (In terms of r1, Θ1, and ΘT)
 
haytil said:
I'm sorry, I'm not being very clear. The scenario I'm trying to handle is quite simple, I'm just not explaining it right. Let me try again:


Imagine a straight line that passes through the point (r1, Θ1) and that the slope of the line at that point is sin(ΘT)/cos(ΘT).

What is the value of dr/dΘ of the line at that point? (In terms of r1, Θ1, and ΘT)
Your question still doesn't make sense. What is "T"? The slope of a straight line is a constant and so T should not be a variable. Or do you mean \Theta T as "\Theta_T, a constant? If that is the case then the line, in xy-coordinates (since the slope of a line is defined in terms of xy- coordinates), is given by
x= \left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1cos(\theta_1)
y= \left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1sin(\theta_1)
and, since x= r cos(\theta), y= r sin(\theta),
r cos(\theta)= \left(\frac{cos(\Theta_T)}{sin(\Theta_T)}s+ r_1cos(\theta_1)
r sin(\theta)= \left(\frac{cos(\Theta_T)}{sin(\Theta_T)}s+ r_1sin()\theta_1)
we have, by squaring and adding,
r^2= \left(\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1cos(\theta_1)\right)^2+ \left(\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1sin(\theta_1)\right)^2
or
r= \sqrt{\left(\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1cos(\theta_1)\right)^2+ \left(\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}\right)s+ r_1sin(\theta_1)\right)^2}
Dividng the second equation by the first
tan(\theta)= \frac{sin(\theta)}{cos(\theta)}= \frac{\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}s+ r_1sin()\theta_1)\right)}{\left(\frac{cos(\Theta_T)}{sin(\Theta_T)}s+ r_1cos(\theta_1)\right)}
 

Similar threads

Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 11 ·
Replies
11
Views
2K
Replies
1
Views
2K
Replies
9
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
3
Views
2K
  • · Replies 5 ·
Replies
5
Views
37K