bla initial

This commit is contained in:
Ward Wouts 2007-05-01 23:08:34 +00:00
parent 4db4d71b6c
commit 55b43542e3

178
causal/causal.rb Executable file
View file

@ -0,0 +1,178 @@
#!/usr/bin/ruby
# $Id: ruby 1708 2006-02-24 10:09:22Z ward $
# $URL$
#
# Copyright (c) 2006 Ward Wouts <ward@wouts.nl>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
j1 = Array.new
j2 = Array.new
j3 = Array.new
j4 = Array.new
class Juggler
attr_writer :juggler
attr_writer :color
attr_writer :nodecolor
attr_writer :offset
def initialize
@hands = [ "R", "L" ]
@juggler = 0
@offset = 0
@throws = Array.new
@starthand = "R"
end
def draw
(0..@throws.length).each{|x|
drawnode(x)
#p "#{x} #{@throws[x]}"
if @throws[x].nil?
next
end
if @throws[x].match(/p/)
drawpass(x)
else
drawself(x)
end
}
end
def drawnode(n)
puts "\\pscircle#{@nodecolor ? "[linecolor=#{@nodecolor}]" : ""}(#{(n*2+0.5+@offset*2)},-#{@juggler*2+1}){0.4}"
if @color
puts "\\rput(#{(n*2+0.5+@offset*2)},-#{@juggler*2+1}){{\\color{#{@color}}#{@hands[n.modulo(2)]}}}"
else
puts "\\rput(#{(n*2+0.5+@offset*2)},-#{@juggler*2+1}){#{@hands[n.modulo(2)]}}"
end
end
def drawself(n)
case @throws[n].to_f
when 0 then puts "0"
when 1 then puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2-0.1+@offset*2},-#{@juggler*2+1})(#{(n*2)-0.9+@offset*2},-#{@juggler*2+1}) % self j#{@juggler+1}"
when 2 then
if @juggler == 0
puts "\\psecurve#{@color ? "[linecolor=#{@color}]" : ""}{->}" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+1})" +
"(#{n*2+0.1+@offset*2},-#{@juggler*2+0.6})" +
"(#{n*2-0.1+@offset*2},-#{@juggler*2+0.4})" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+0.1})" +
"(#{n*2+1.1+@offset*2},-#{@juggler*2+0.4})" +
"(#{n*2+0.9+@offset*2},-#{@juggler*2+0.6})" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+1})"
else
puts "\\psecurve#{@color ? "[linecolor=#{@color}]" : ""}{->}" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+1})" +
"(#{n*2+0.1+@offset*2},-#{@juggler*2+1.4})" +
"(#{n*2-0.1+@offset*2},-#{@juggler*2+1.6})" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+1.9})" +
"(#{n*2+1.1+@offset*2},-#{@juggler*2+1.6})" +
"(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})" +
"(#{n*2+0.5+@offset*2},-#{@juggler*2+1})"
end
when 3 then puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+1.1+@offset*2},-#{@juggler*2+1})(#{(n*2)+1.9+@offset*2},-#{@juggler*2+1}) % self j#{@juggler+1}"
when 4 then
if @juggler == 0
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-0.6)(#{n*2+2.5},-0.4)(#{n*2+4.1+@offset*2},-0.6) % double self j#{@juggler+1}"
else
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+2.5+@offset*2},-#{@juggler*2+1.6})(#{n*2+4.1+@offset*2},-#{@juggler*2+1.4}) % double self j#{@juggler+1}"
end
when 5
if @juggler == 0
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-0.6)(#{n*2+3.5},-0.2)(#{n*2+6.1+@offset*2},-0.6) % triple self j#{@juggler+1}"
else
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+3.5+@offset*2},-#{@juggler*2+1.8})(#{n*2+6.1},-#{@juggler*2+1.4}) % triple self j#{@juggler+1}"
end
when 6
if @juggler == 0
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-0.6)(#{n*2+4.5},0)(#{n*2+8.1+@offset*2},-0.6) % quad self j#{@juggler+1}"
else
puts "\\pscurve#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+4.5+@offset*2},-#{@juggler*2+2})(#{n*2+8.1},-#{@juggler*2+1.4}) % quad self j#{@juggler+1}"
end
end
end
def drawpass(n, to=nil)
if @juggler == 0 and to.nil?
to = 1
elsif to.nil?
to = @juggler - 1
end
case @throws[n]
when "3p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+1.4})(#{n*2+2.1},-#{@juggler*2+2.6}) % single pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+0.6})(#{n*2+2.1},-#{@juggler*2-0.6}) % single pass j#{@juggler+1}"
end
when "3.5p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+3.1+@offset*2},-#{@juggler*2+2.6}) % single pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+0.6})(#{n*2+3.1+@offset*2},-#{@juggler*2-0.6}) % single pass j#{@juggler+1}"
end
when "4p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+4.1+@offset*2},-#{@juggler*2+2.6}) % double pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+0.6})(#{n*2+4.1+@offset*2},-#{@juggler*2-0.6}) % double pass j#{@juggler+1}"
end
when "4.5p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+1.4})(#{n*2+5.1+@offset*2},-#{@juggler*2+2.6}) % double pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9+@offset*2},-#{@juggler*2+0.6})(#{n*2+5.1+@offset*2},-#{@juggler*2-0.6}) % double pass j#{@juggler+1}"
end
when "5p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+1.4})(#{n*2+6.1},-#{@juggler*2+2.6}) % triple pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+0.6})(#{n*2+6.1},-#{@juggler*2-0.6}) % triple pass j#{@juggler+1}"
end
when "6p" then
if to > @juggler
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+1.4})(#{n*2+8.1},-#{@juggler*2+2.6}) % quad pass j#{@juggler+1}"
else
puts "\\psline#{@color ? "[linecolor=#{@color}]" : ""}{->}(#{n*2+0.9},-#{@juggler*2+0.6})(#{n*2+8.1},-#{@juggler*2-0.6}) % quad pass j#{@juggler+1}"
end
end
end
def pattern=(pat)
@throws = pat.split(/ /)
end
end
class Jugglers
end
j1 = Juggler.new
#j1.pattern="4p 4 4 4p 4 4 4p"
# 94674 start 67494
j1.pattern="3 3.5p 2 4.5p 2 3 3.5p 2 4.5p 2"
#j1.color = "darkgray"
#j1.nodecolor = "darkgray"
j1.draw
j2 = Juggler.new
j2.juggler = 1
#j2.pattern="4p 4 4 4p 4 4 4p"
# 98274 start 27498
j2.offset = 0.5
j2.pattern="4.5p 4 1 3.5p 2 4.5p 4 1 3.5p 2"
j2.draw