MoI discussion forum
MoI discussion forum

Full Version: Cylindrical Sliding Rule

From: Nicolinux
20 Nov 2017   [#1]
Hi,

I'd like to create a cylindrical sliding rule [1]. For that I need to draw/position the numbers from 1 to 9 on the outer edge of a 360DEG circle spacing the numbers apart in a logarithmic fashion. Is there any tool that can help me with that? I thought about the deform tool with the projective mode but it didn't work (or I don't understand how it works).

Thanks,
Stefan

[1] http://ratfactor.com/circular-slide-rule-watch-tutorial
From: Michael Gibson
20 Nov 2017   [#2] In reply to [#1]
Hi Nico, probably the easiest way is to use curve-to-curve flow. Create horizontal text, draw a line under your text and a circle off to the side. Then select your text (only the text, not the line under it or the circle) and run Transform > Deform > Flow. Then pick the line as the base curve and the circle as the target curve.

See here for some examples of curve-to-curve flow:
http://moi3d.com/3.0/docs/moi_command_reference8.htm#flow

Also having the line be the same length as the circle circumference can be good to have better control of how it's going to be spaced on the circle. To do that you can draw your circle first and then create a line of the proper length using the UnwrapCurve plug-in from here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=5136.1

- Michael
From: bemfarmer
21 Nov 2017   [#3] In reply to [#1]
Hi nicolinux

I did a little google searching, and despite my limited understanding, found the following:

Re: C and D scales, which are logarithmic scales, base 10, and which are the same:

The C and D scales on a sliderule, have a single "Decade", ranging from 1 to 10.
(10 to 90 are also mentioned. but it seems zeros are dropped in some calculations.)
( The watches have divisions between 90 and 10, so a range of 1 to 10 seems appropriate, rather than 1 to 9...)
The "10" at the far right of the C or D scales is shown as another "1".

For a real number x, the distance from the "Start Point" to x is equal to log(x). (distance(x) = log(x).)
The "Start Point" of the C and D scales is the number 1. This is because distance(1) = log(1) = 0.

https://arxiv.org/ftp/arxiv/papers/1706/1706.04390.pdf

log(2) = .30103 (approximately)

log(3) = .47712

- Brian

ps, the link has another link to a virtual sliderule. It has a few subdivisions below 1 and above 10, beyond the traditional ones.
Also shows pips at 1.1 and 1.2, etc, which correspond to logs of 11 and 12, etc, minus 1.
From: bemfarmer
21 Nov 2017   [#4] In reply to [#3]
So I would suggest a simple script to space short vertical lines along Michael source line, at these logarithmic distances.
The numbers would be placed above for one set ( say C), and below for the other set (say D)
- Brian

Also to be placed would be secondary pips.
This link talks of them, but is not very understandable, and has no pictures.
http://calclab.math.tamu.edu/~fulling/m152/sliderul.html

Michaels script LineWeb will make short lines between two lines, so all that would be need to be modified is the log spacing...
Or a logarithmic "array"...
From: bemfarmer
21 Nov 2017   [#5] In reply to [#4]
Something like:
StartNum = 1
EndNum = 10
for ( i = 1, i <= 10, ++i )
{
logpt = moi.vectorMath.createPoint( i, 0, 0 );
Save the points in a point factory...Substitue this log array for the linear array in LineWeb.
}

Set up two lines between x = 0 and x= 1, separated by a short distance.
Run modified LineWeb on these two lines.

The line pips for sliderule values 1 through 10 would be at x = 0 through x = 10

Bedtime :-)
- Brian
From: bemfarmer
21 Nov 2017   [#6]
Here is a simple script to generate the log base 10 line segments.
u = 1 corresponds to sliderule value of 1, and is located at x = 0.
u = 10 corresponds to sliderule value of 10 (abbreviates to a second 1 at right side.), and is located at x = 1.
Max's _FxGraph3d script needs to be in MoI's command folder.
It was necessary to use the 9 in the formula, to get 10 lines...


_FxGraph3D log(u)/log(10);(v);0;1;10;-0.5;0.5;9;1;0;0;0;U

Instructions for use:
Highlight the _Fx... line.
Press tab
Press Ctrl+V
Press enter.

- Brian

(Values should be checked to make sure that they are correct.)
Points for log(2) and log(3) check out as correct, using _PointCoordinates script. To 5 decimals anyway...

Script works in MoIv3, and MoIv4BetaNov18, 2017

ps, The output should be scaleable to match your base line...

Note, change the Mode to U, for some reason, the first time applied in MoIv3, it comes up UV, may be a bug?
Weird, script comes up in Mode U in MoIv4beta.
From: Nicolinux
21 Nov 2017   [#7]
You rock so hard!
Thanks, it worked perfectly. I now have a bunch of useful scripts/plugins and thanks to you the problem is solved :)



Image Attachments:
c_slide_rule.png