Cylindrical Sliding Rule

Next
 From:  Nicolinux
8690.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
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
8690.2 In reply to 8690.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
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  bemfarmer
8690.3 In reply to 8690.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.

EDITED: 21 Nov by BEMFARMER

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  bemfarmer
8690.4 In reply to 8690.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"...

EDITED: 21 Nov by BEMFARMER

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  bemfarmer
8690.5 In reply to 8690.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
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  bemfarmer
8690.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.

EDITED: 21 Nov by BEMFARMER

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Nicolinux
8690.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 :)



Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All