![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Hi all,
I'm trying to make a simple cable macro. The macro is supposed to make a
straight cable from 2 given end points such that the cable is made up of a
number of given strands twisted smothly around one another. Also given to
the macro is the radius of the cable as a whole and the twistiness of the
strands. In use it looks like (will look like) the cable is solid even
though it is actuall a hollow tube. A very small image is attached showing
what a 7 strand cable should look like when viewed from the end (an unusual
place to view such a cable).
The problem that I am having is calculating the radius of the small
inner strands. In the attached picture the inner strands are yellow and the
outer red is simply for reference and won't show up in a real cable. In the
image I guessed the yellow radii by trial and error just to make the
picture. In real use this needs to be an automatic calculation.
I've been working on the math a lot and finally derived this formula:
z^2 = -8r^4 - (4R + 10)r^3 + (5R + 12R^2)r^2 - 6R^3r + R^4
Where z is a known constant that is related to the number of strands and R
is the given radius of the large red circle and r is the radius to be
calcuated. The problem is solving the 4th order polynomial. I also solved
the problem for the case where there are 3 strands only and got this:
r = R / (2 + ((2 - sqrt(3)) / sqrt(3)))
The problem with this is generalizing it to more strands.
Once I get the radius I need the part of twisting the strands is easy.
Any ideas?
Thanks,
--Rainer
Post a reply to this message
Attachments:
Download '7.jpg' (4 KB)
Preview of image '7.jpg'
![7.jpg](/povray.advanced-users/attachment/%3C374baac0.0%40news.povray.org%3E/7.jpg?ttop=443814&toff=2000&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Rainer Mager wrote:
>
> Hi all,
> The problem that I am having is calculating the radius of the small
> inner strands. In the attached picture the inner strands are yellow and the
> outer red is simply for reference and won't show up in a real cable. In the
> image I guessed the yellow radii by trial and error just to make the
> picture. In real use this needs to be an automatic calculation.
>
> I've been working on the math a lot and finally derived this formula:
>
> z^2 = -8r^4 - (4R + 10)r^3 + (5R + 12R^2)r^2 - 6R^3r + R^4
>
> Where z is a known constant that is related to the number of strands and R
> is the given radius of the large red circle and r is the radius to be
> calcuated. The problem is solving the 4th order polynomial. I also solved
> the problem for the case where there are 3 strands only and got this:
>
> r = R / (2 + ((2 - sqrt(3)) / sqrt(3)))
>
> The problem with this is generalizing it to more strands.
>
> Once I get the radius I need the part of twisting the strands is easy.
>
> Any ideas?
Well, I was thinking quickly about the circumference of the red and
yellow.
It seems there is the following approximate relation:
2.n.r = 2.pi.(R-r)
which is :
the sum of the diameter (2.r) of the yellow circles (.n) is
equal to the perimeter (2.pi) of the circle going through all the
centers
of the yellow circles.
The difference between this circle and the red circle is the
radius of a yellow circle. (R-r)
So the relation is :
2.(n+pi).r = 2.pi.R
or
r = pi.R/(n+pi)
Caveat : n should be big enough so you can consider a segment as an arc.
(at least 6, so that make 12 segments ?)
calculation for n=6 give:
r = R * .34365903524
instead of the awaited r = R / 3
only a 3 % error !!
>
> Thanks,
>
> --Rainer
>
> ------------------------------------------------------------------------
> Name: 7.jpg
> 7.jpg Type: JPEG Image (image/jpeg)
> Encoding: base64
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
I would say that the relation is :
sin(pi / n) = r/(R-r)
where n is the number of small circles, r the radius of the small circles
and R the radius of the big one.
for n=6 this gives r = R/3 which is true !
Philippe
<374baac0.0@news.povray.org>...
>Hi all,
>
> I'm trying to make a simple cable macro. The macro is supposed to make
a
>straight cable from 2 given end points such that the cable is made up of a
>number of given strands twisted smothly around one another. Also given to
>the macro is the radius of the cable as a whole and the twistiness of the
>strands. In use it looks like (will look like) the cable is solid even
>though it is actuall a hollow tube. A very small image is attached showing
>what a 7 strand cable should look like when viewed from the end (an unusual
>place to view such a cable).
> The problem that I am having is calculating the radius of the small
>inner strands. In the attached picture the inner strands are yellow and the
>outer red is simply for reference and won't show up in a real cable. In the
>image I guessed the yellow radii by trial and error just to make the
>picture. In real use this needs to be an automatic calculation.
>
> I've been working on the math a lot and finally derived this formula:
>
>z^2 = -8r^4 - (4R + 10)r^3 + (5R + 12R^2)r^2 - 6R^3r + R^4
>
>Where z is a known constant that is related to the number of strands and R
>is the given radius of the large red circle and r is the radius to be
>calcuated. The problem is solving the 4th order polynomial. I also solved
>the problem for the case where there are 3 strands only and got this:
>
>r = R / (2 + ((2 - sqrt(3)) / sqrt(3)))
>
>The problem with this is generalizing it to more strands.
>
>Once I get the radius I need the part of twisting the strands is easy.
>
>Any ideas?
>
>
>Thanks,
>
>--Rainer
>
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On Wed, 26 May 1999 16:50:50 +0200, Ph Gibone wrote:
>I would say that the relation is :
>
>sin(pi / n) = r/(R-r)
>
>where n is the number of small circles, r the radius of the small circles
>and R the radius of the big one.
>
>for n=6 this gives r = R/3 which is true !
I get this too (the argument to sin is in radians). Here's the reasoning:
The centers of the smaller circles are the vertices of a regular n-gon.
The distance between centers is 2*r, but it is also the length of the side
of a regular n-gon of radius R-r. That length is 2*(R-r)*sin(pi/n). So,
2*r=2*(R-r)*sin(pi/n).
Solving for r I get:
r = R*(sin(pi/n)/(1+sin(pi/n)))
Note, however, that there is a more efficient way to pack 7 wires than the
one shown in the image: pack six around the outside and put the seventh in
the center. The seventh wire won't be twisted, but you'll be able to use
the larger wire radius of R/3. This leads to a much hairier problem, but
if you never look at the end of the cable nobody will ever know anyway.
Depending on how you're doing the twist, you may find that this value for
r is too big. If you're using helices with a minor radius of r and a
major radius of R-r, a cross-section of the cable will contain something
resembling ellipses with a minor radius of r and a major radius, s, that
depends on the amount of twist you're applying (s/r increases as you twist
more.) The minor radius of each ellipse will lie on a radius of the cable.
As a result, the equation is now much, much uglier. After this point I
don't trust my math much but I'll make an attempt:
I think that the distance between centers is now something like
2*(r+sqrt(s^2-r^2)*cos(pi/n)).
I think the relationship between s and r is something like
s^2 = r^2+(2*pi*(R-r)*r/w)^2), where w is the "wavelength" of a single
twist. So s^2-r^2 is (2*pi*(R-r)*r/w)^2 and we get
r*(1+(2*pi*(R-r)/w)*cos(pi/n))=(R-r)*sin(pi/n).
Notice that as w approaches infinity, corresponding to zero twist, this
approaches the equation we had before. As w approaches zero,
corresponding to an infinite "amount of twist", r approaches zero as
well. Somebody else can try to solve this mess for r. :)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 26 May 1999 12:21:54 -0500, Ron Parker wrote:
>I think that the distance between centers is now something like
>2*(r+sqrt(s^2-r^2)*cos(pi/n)).
I would be wrong, however, because I stupidly made the old
sqrt(a+b)=sqrt(a)+sqrt(b) mistake. The correct result is even
uglier than I said it is:
2*sqrt(r^2+(s^2-r^2)*(cos(pi/n))^2)
>I think the relationship between s and r is something like
>s^2 = r^2+(2*pi*(R-r)*r/w)^2), where w is the "wavelength" of a single
>twist. So s^2-r^2 is (2*pi*(R-r)*r/w)^2 and we get
I don't yet see anything wrong with this part, but the rest of the
derivation is wrong. Instead we have:
(R-r)^2*(sin(pi/n))^2=r^2+(2*pi*(R-r)*r/w*cos(pi/n))^2
I still don't feel like solving for r. :)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Just a thought, consider making the large circle pass through the centers
of the small circles.
This assumption should make the maths simpler as you need to calculate a
polygon with n sids for n equally sized wires on the perimiter. This
automaticallty gives the centers of the wires and there diametes (1/2 of the
polygon face).
I think the outside diameter of the cable also becomes easier, corner to
opposite corner of the polygon + the diameter of one circle.
of course, I could be wrong as my maths is very rusty!!!
Have fun.
----------------------------------------------------------------------------
-----------------------------------------------------
Gra### [at] themelias freeserve co uk
"Life is like a box of chocalates... "
... the longer you hold on, the sticker it gets.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |