1
$\begingroup$

I'm struggling to get the math to work out on this. I need to derive an alorithm for a program where I'm representing geometric entities. In this case, it's an arc. I would like to create the arc in 3D space using two points, the radius, and a normal. Any help would be greatly appreciated.

Edit:

To clarify....

  • The two points, radius, and normal are given.
  • It is a circular arc
  • The two points are the end points of the arc.
  • The radius is the radius of the circle defining the arc. Thus as would be expected, the segments from the two end points of the arc to the center would have a length equal to the radius.
  • The normal is the normal unit vector to the plane of the circle defining the arc, thus yes perpendicular to the plane of the arc.

I'm just trying to derive an algorithm to find the center point of the circle defining the arc with the aforementioned given in 3D space. Any help would be greatly appreciated.

$\endgroup$
  • 3
    $\begingroup$ Please be more clear. Are you given the two points, radius and normal and you want to find a corresponding circular arc? Are the two points the ends of the arc? Is the "radius" just a line segment that has the same length as a radius? Is the "normal" in the plane of the arc, perpendicular to that plane, or other? Is finding the center point of the arc enough do say we "found" the arc? $\endgroup$ – Rory Daulton Dec 30 '15 at 20:48
  • $\begingroup$ I've updated the question per your comments. $\endgroup$ – bjhuffine Dec 30 '15 at 21:14
  • $\begingroup$ Thank you, I have retracted my close vote due to your original unclear question. One last point: the "radius" you are given is a positive real number, the size of any radius of the circular arc? $\endgroup$ – Rory Daulton Dec 31 '15 at 0:15
  • $\begingroup$ I assume you're asking if the radius is considered a variable parameter to the algorithm? Yes it is and yes it should be assumed to be any positive realy number. $\endgroup$ – bjhuffine Dec 31 '15 at 13:03
  • $\begingroup$ The point of my question is that a "radius" can be a line segment from the center to the rim of a circle. It also can be a positive real number, the length of such a line segment. It is now clear that you do not mean the line segment. $\endgroup$ – Rory Daulton Dec 31 '15 at 13:33
1
$\begingroup$

The plane of the arc is found from one of the points with $d=\hat{n} \cdot \vec{p}_1$ such that any point $\vec{r}=(x,y,z)$ belongs to the plane if $$ \hat{n} \cdot \vec{r} = d$$ where $\hat{n}$ is the unit normal vector.

The midpoint of the two points is $$\vec{p}_m = \frac{\vec{p}_1 + \vec{p}_2}{2} $$

Next we need two unit vectors on the plane to define planar coordinates. Use $$\hat{u} = {\rm unitvector}(\vec{p}_2-\vec{p}_1) $$ $$ \hat{v} = \hat{n} \times \hat{u} $$

We need the center of the arc point on the plane, and we can find it by moving from the mid point $\vec{p}_m$ along the direction $\vec{v}$ by $$h = \frac{ \ell^2}{2 r}$$ where $\ell = \| \vec{p}_2 - \vec{p}_1 \|$.

The figure below shows the arc and the height calculation from the chord length $\ell$ and radius $r$.

pic

So the center is at $$\vec{p}_c = \vec{p}_m + (h-r) \hat{v}$$

The included angle of the arc is $$\theta = 2 \sin^{-1} \left( \frac{\ell}{2 r} \right) $$

Finally the arc is parametrically defined as $$\vec{r}(t) = \vec{p}_c + {\rm Rot}(\hat{n}, -\frac{\theta}{2} + t \theta) \hat{v} r $$

$\endgroup$
  • $\begingroup$ I tried working through what you have here and you seem to be very, very close. The equation for the sagitta, h, is off though. It should be $h=r-\sqrt{r^2-\ell^2}$ where $\ell$ is actually the half chord length. I had to research this part after finding the issue when debugging my code. Also, I haven't verified the effect on your angle and parametric equation formulas. $\endgroup$ – bjhuffine Dec 31 '15 at 15:08
  • $\begingroup$ You are probably right. What I calculated and what I drew was different and thus in the inconsistency. Anyway I think you get the idea enough to work it out on your own. $\endgroup$ – ja72 Dec 31 '15 at 16:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.