Class: RubySketch::Processing::Context

Inherits:
Object
  • Object
show all
Includes:
GraphicsContext
Defined in:
lib/rubysketch/processing.rb

Overview

Processing context

Constant Summary collapse

@@context__ =
nil

Constants included from GraphicsContext

GraphicsContext::BASELINE, GraphicsContext::BOTTOM, GraphicsContext::BUTT, GraphicsContext::CENTER, GraphicsContext::CORNER, GraphicsContext::CORNERS, GraphicsContext::DEGREES, GraphicsContext::HALF_PI, GraphicsContext::HSB, GraphicsContext::LEFT, GraphicsContext::MITER, GraphicsContext::PI, GraphicsContext::QUARTER_PI, GraphicsContext::RADIANS, GraphicsContext::RADIUS, GraphicsContext::RGB, GraphicsContext::RIGHT, GraphicsContext::ROUND, GraphicsContext::SQUARE, GraphicsContext::TAU, GraphicsContext::TOP, GraphicsContext::TWO_PI, GraphicsContext::Vector

Class Method Summary collapse

Instance Method Summary collapse

Methods included from GraphicsContext

#angleMode, #arc, #background, #beginDraw, #bezier, #circle, #colorMode, #copy, #curve, #ellipse, #ellipseMode, #endDraw, #fill, #height, #image, #imageMode, #line, #noFill, #noStroke, #point, #pop, #popMatrix, #popStyle, #push, #pushMatrix, #pushStyle, #quad, #rect, #rectMode, #resetMatrix, #rotate, #scale, #setup__, #square, #stroke, #strokeCap, #strokeJoin, #strokeWeight, #text, #textAlign, #textAscent, #textDescent, #textFont, #textSize, #textWidth, #translate, #triangle, #width

Class Method Details

.context__Object



1641
1642
1643
# File 'lib/rubysketch/processing.rb', line 1641

def self.context__ ()
  @@context__
end

Instance Method Details

#abs(value) ⇒ Numeric

Returns the absolute number of the value.

Parameters:

  • value (Numeric)

    number

Returns:

  • (Numeric)

    absolute number



1882
1883
1884
# File 'lib/rubysketch/processing.rb', line 1882

def abs (value)
  value.abs
end

#acos(value) ⇒ Numeric

Returns the inverse of cos().

Parameters:

  • value (Numeric)

    value for calculation

Returns:

  • (Numeric)

    the arc cosine



2135
2136
2137
# File 'lib/rubysketch/processing.rb', line 2135

def acos (value)
  Math.acos value
end

#asin(value) ⇒ Numeric

Returns the inverse of sin().

Parameters:

  • value (Numeric)

    value for calculation

Returns:

  • (Numeric)

    the arc sine



2125
2126
2127
# File 'lib/rubysketch/processing.rb', line 2125

def asin (value)
  Math.asin value
end

#atan(value) ⇒ Numeric

Returns the inverse of tan().

Parameters:

  • value (Numeric)

    value for valculation

Returns:

  • (Numeric)

    the arc tangent



2145
2146
2147
# File 'lib/rubysketch/processing.rb', line 2145

def atan (value)
  Math.atan value
end

#atan2(y, x) ⇒ Numeric

Returns the angle from a specified point.

Parameters:

  • y (Numeric)

    y of the point

  • x (Numeric)

    x of the point

Returns:

  • (Numeric)

    the angle in radians



2156
2157
2158
# File 'lib/rubysketch/processing.rb', line 2156

def atan2 (y, x)
  Math.atan2 y, x
end

#ceil(value) ⇒ Numeric

Returns the closest integer number greater than or equal to the value.

Parameters:

  • value (Numeric)

    number

Returns:

  • (Numeric)

    rounded up number



1892
1893
1894
# File 'lib/rubysketch/processing.rb', line 1892

def ceil (value)
  value.ceil
end

#constrain(value, min, max) ⇒ Numeric

Constrains the number between min..max.

Parameters:

  • value (Numeric)

    number to be constrained

  • min (Numeric)

    lower bound of the range

  • max (Numeric)

    upper bound of the range

Returns:

  • (Numeric)

    constrained number



2065
2066
2067
# File 'lib/rubysketch/processing.rb', line 2065

def constrain (value, min, max)
  value < min ? min : (value > max ? max : value)
end

#cos(angle) ⇒ Numeric

Returns the cosine of an angle.

Parameters:

  • angle (Numeric)

    angle in radians

Returns:

  • (Numeric)

    the cosine



2105
2106
2107
# File 'lib/rubysketch/processing.rb', line 2105

def cos (angle)
  Math.cos angle
end

#createGraphics(width, height) ⇒ Graphics

Creates a new off-screen graphics context object.

Parameters:

  • width (Numeric)

    width of graphics image

  • height (Numeric)

    height of graphics image

Returns:



2218
2219
2220
# File 'lib/rubysketch/processing.rb', line 2218

def createGraphics (width, height)
  Graphics.new width, height
end

#createVectorVector #createVector(x, y) ⇒ Vector #createVector(x, y, z) ⇒ Vector

Creates a new vector.

Parameters:

  • x (Numeric)

    x of new vector

  • y (Numeric)

    y of new vector

  • z (Numeric)

    z of new vector

Returns:



2207
2208
2209
# File 'lib/rubysketch/processing.rb', line 2207

def createVector (*args)
  Vector.new *args
end

#degrees(radian) ⇒ Numeric

Converts radian to degree.

Parameters:

  • radian (Numeric)

    radian to convert

Returns:

  • (Numeric)

    degree



2085
2086
2087
# File 'lib/rubysketch/processing.rb', line 2085

def degrees (radian)
  radian * RAD2DEG__
end

#displayDensityNumeric

Returns pixel density

Returns:

  • (Numeric)

    pixel density



1804
1805
1806
# File 'lib/rubysketch/processing.rb', line 1804

def displayDensity ()
  @painter__.pixel_density
end

#dist(x1, y1, x2, y2) ⇒ Numeric #dist(x1, y1, z1, x2, y2, z2) ⇒ Numeric

Returns distance between 2 points.

Parameters:

  • x1 (Numeric)

    x of first point

  • y1 (Numeric)

    y of first point

  • z1 (Numeric)

    z of first point

  • x2 (Numeric)

    x of second point

  • y2 (Numeric)

    y of second point

  • z2 (Numeric)

    z of second point

Returns:

  • (Numeric)

    distance between 2 points



1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
# File 'lib/rubysketch/processing.rb', line 1971

def dist (*args)
  case args.size
  when 4
    x1, y1, x2, y2 = *args
    xx, yy = x2 - x1, y2 - y1
    Math.sqrt xx * xx + yy * yy
  when 3
    x1, y1, z1, x2, y2, z2 = *args
    xx, yy, zz = x2 - x1, y2 - y1, z2 - z1
    Math.sqrt xx * xx + yy * yy + zz * zz
  else raise ArgumentError
  end
end

#draw(&block) ⇒ Object

Define draw block.



1720
1721
1722
1723
# File 'lib/rubysketch/processing.rb', line 1720

def draw (&block)
  @drawBlock__ = block if block
  nil
end

#floor(value) ⇒ Numeric

Returns the closest integer number less than or equal to the value.

Parameters:

  • value (Numeric)

    number

Returns:

  • (Numeric)

    rounded down number



1902
1903
1904
# File 'lib/rubysketch/processing.rb', line 1902

def floor (value)
  value.floor
end

#frameCountInteger

Returns number of frames since program started.

Returns:

  • (Integer)

    total number of frames



1788
1789
1790
# File 'lib/rubysketch/processing.rb', line 1788

def frameCount ()
  @frameCount__
end

#frameRateFloat

Returns number of frames per second.

Returns:

  • (Float)

    frames per second



1796
1797
1798
# File 'lib/rubysketch/processing.rb', line 1796

def frameRate ()
  @window__.event.fps
end

#key(&block) ⇒ Object



1725
1726
1727
1728
# File 'lib/rubysketch/processing.rb', line 1725

def key (&block)
  @window__.key = block
  nil
end

#lerp(start, stop, amount) ⇒ Numeric

Returns the interpolated number between range start..stop.

Parameters:

  • start (Numeric)

    lower bound of the range

  • stop (Numeric)

    upper bound of the range

  • amount (Numeric)

    amount to interpolate

Returns:

  • (Numeric)

    interporated number



2005
2006
2007
# File 'lib/rubysketch/processing.rb', line 2005

def lerp (start, stop, amount)
  start + (stop - start) * amount
end

#loadImage(filename, extension = nil) ⇒ Image

Loads image.

Parameters:

  • filename (String)

    file name to load image

  • extension (String) (defaults to: nil)

    type of image to load (ex. 'png')

Returns:

  • (Image)

    loaded image object



2229
2230
2231
2232
# File 'lib/rubysketch/processing.rb', line 2229

def loadImage (filename, extension = nil)
  filename = getImage__ filename, extension if filename =~ %r|^https?://|
  Image.new Rays::Image.load filename
end

#loopnil

Enables calling draw block on every frame.

Returns:

  • (nil)

    nil



1852
1853
1854
# File 'lib/rubysketch/processing.rb', line 1852

def loop ()
  @loop__ = true
end

#mag(x, y) ⇒ Numeric #mag(x, y, z) ⇒ Numeric

Returns the magnitude (or length) of a vector.

Parameters:

  • x (Numeric)

    x of point

  • y (Numeric)

    y of point

  • z (Numeric)

    z of point

Returns:

  • (Numeric)

    magnitude



1948
1949
1950
1951
1952
1953
1954
1955
# File 'lib/rubysketch/processing.rb', line 1948

def mag (*args)
  x, y, z = *args
  case args.size
  when 2 then Math.sqrt x * x + y * y
  when 3 then Math.sqrt x * x + y * y + z * z
  else raise ArgumentError
  end
end

#map(value, start1, stop1, start2, stop2) ⇒ Numeric

Maps a number from range start1..stop1 to range start2..stop2.

Parameters:

  • value (Numeric)

    number to be mapped

  • start1 (Numeric)

    lower bound of the range1

  • stop1 (Numeric)

    upper bound of the range1

  • start2 (Numeric)

    lower bound of the range2

  • stop2 (Numeric)

    upper bound of the range2

Returns:

  • (Numeric)

    mapped number



2019
2020
2021
# File 'lib/rubysketch/processing.rb', line 2019

def map (value, start1, stop1, start2, stop2)
  lerp start2, stop2, norm(value, start1, stop1)
end

#max(a, b) ⇒ Numeric #max(a, b, c) ⇒ Numeric #max(array) ⇒ Numeric

Returns maximum value.

Parameters:

  • a (Numeric)

    value to compare

  • b (Numeric)

    value to compare

  • c (Numeric)

    value to compare

  • array (Numeric)

    values to compare

Returns:

  • (Numeric)

    maximum value



2053
2054
2055
# File 'lib/rubysketch/processing.rb', line 2053

def max (*args)
  args.flatten.max
end

#min(a, b) ⇒ Numeric #min(a, b, c) ⇒ Numeric #min(array) ⇒ Numeric

Returns minimum value.

Parameters:

  • a (Numeric)

    value to compare

  • b (Numeric)

    value to compare

  • c (Numeric)

    value to compare

  • array (Numeric)

    values to compare

Returns:

  • (Numeric)

    minimum value



2036
2037
2038
# File 'lib/rubysketch/processing.rb', line 2036

def min (*args)
  args.flatten.min
end

#mouseDragged(&block) ⇒ Object



1745
1746
1747
1748
# File 'lib/rubysketch/processing.rb', line 1745

def mouseDragged (&block)
  @mouseDraggedBlock__ = block if block
  nil
end

#mouseMoved(&block) ⇒ Object



1740
1741
1742
1743
# File 'lib/rubysketch/processing.rb', line 1740

def mouseMoved (&block)
  @mouseMovedBlock__ = block if block
  nil
end

#mousePressed(&block) ⇒ Object



1730
1731
1732
1733
# File 'lib/rubysketch/processing.rb', line 1730

def mousePressed (&block)
  @mousePressedBlock__ = block if block
  @mousePressed__
end

#mouseReleased(&block) ⇒ Object



1735
1736
1737
1738
# File 'lib/rubysketch/processing.rb', line 1735

def mouseReleased (&block)
  @mouseReleasedBlock__ = block if block
  nil
end

#mouseXNumeric

Returns mouse x position

Returns:

  • (Numeric)

    horizontal position of mouse



1812
1813
1814
# File 'lib/rubysketch/processing.rb', line 1812

def mouseX ()
  @mousePos__.x
end

#mouseYNumeric

Returns mouse y position

Returns:

  • (Numeric)

    vertical position of mouse



1820
1821
1822
# File 'lib/rubysketch/processing.rb', line 1820

def mouseY ()
  @mousePos__.y
end

#noise(x) ⇒ Numeric #noise(x, y) ⇒ Numeric #noise(x, y, z) ⇒ Numeric

Returns the perlin noise value.

Parameters:

  • x (Numeric)

    horizontal point in noise space

  • y (Numeric) (defaults to: 0)

    vertical point in noise space

  • z (Numeric) (defaults to: 0)

    depth point in noise space

Returns:

  • (Numeric)

    noise value (0.0..1.0)



2172
2173
2174
# File 'lib/rubysketch/processing.rb', line 2172

def noise (x, y = 0, z = 0)
  Rays.perlin(x, y, z) / 2.0 + 0.5
end

#noLoopnil

Disables calling draw block on every frame.

Returns:

  • (nil)

    nil



1860
1861
1862
# File 'lib/rubysketch/processing.rb', line 1860

def noLoop ()
  @loop__ = false
end

#norm(value, start, stop) ⇒ Numeric

Normalize the value from range start..stop into 0..1.

Parameters:

  • value (Numeric)

    number to be normalized

  • start (Numeric)

    lower bound of the range

  • stop (Numeric)

    upper bound of the range

Returns:

  • (Numeric)

    normalized value between 0..1



1993
1994
1995
# File 'lib/rubysketch/processing.rb', line 1993

def norm (value, start, stop)
  (value.to_f - start.to_f) / (stop.to_f - start.to_f)
end

#pmouseXNumeric

Returns mouse x position in previous frame

Returns:

  • (Numeric)

    horizontal position of mouse



1828
1829
1830
# File 'lib/rubysketch/processing.rb', line 1828

def pmouseX ()
  @mousePrevPos__.x
end

#pmouseYNumeric

Returns mouse y position in previous frame

Returns:

  • (Numeric)

    vertical position of mouse



1836
1837
1838
# File 'lib/rubysketch/processing.rb', line 1836

def pmouseY ()
  @mousePrevPos__.y
end

#pow(value, exponent) ⇒ Numeric

Returns value raised to the power of exponent.

Parameters:

  • value (Numeric)

    base number

  • exponent (Numeric)

    exponent number

Returns:

  • (Numeric)

    value ** exponent



1923
1924
1925
# File 'lib/rubysketch/processing.rb', line 1923

def pow (value, exponent)
  value ** exponent
end

#radians(degree) ⇒ Numeric

Converts degree to radian.

Parameters:

  • degree (Numeric)

    degree to convert

Returns:

  • (Numeric)

    radian



2075
2076
2077
# File 'lib/rubysketch/processing.rb', line 2075

def radians (degree)
  degree * DEG2RAD__
end

#randomFloat #random(high) ⇒ Float #random(low, high) ⇒ Float #random(choices) ⇒ Float

Returns a random number in range low…high

Parameters:

  • low (Numeric)

    lower limit

  • high (Numeric)

    upper limit

  • choices (Array)

    array to choose from

Returns:

  • (Float)

    random number



2189
2190
2191
2192
2193
# File 'lib/rubysketch/processing.rb', line 2189

def random (*args)
  return args.first.sample if args.first.kind_of? Array
  high, low = args.reverse
  rand (low || 0).to_f...(high || 1).to_f
end

#redrawnil

Calls draw block to redraw frame.

Returns:

  • (nil)

    nil



1868
1869
1870
# File 'lib/rubysketch/processing.rb', line 1868

def redraw ()
  @redraw__ = true
end

#round(value) ⇒ Numeric

Returns the closest integer number.

Parameters:

  • value (Numeric)

    number

Returns:

  • (Numeric)

    rounded number



1912
1913
1914
# File 'lib/rubysketch/processing.rb', line 1912

def round (value)
  value.round
end

#setup(&block) ⇒ Object

Define setup block.



1713
1714
1715
1716
# File 'lib/rubysketch/processing.rb', line 1713

def setup (&block)
  @window__.setup = block
  nil
end

#sin(angle) ⇒ Numeric

Returns the sine of an angle.

Parameters:

  • angle (Numeric)

    angle in radians

Returns:

  • (Numeric)

    the sine



2095
2096
2097
# File 'lib/rubysketch/processing.rb', line 2095

def sin (angle)
  Math.sin angle
end

#sq(value) ⇒ Numeric

Returns squared value.

Parameters:

  • value (Numeric)

    number

Returns:

  • (Numeric)

    squared value



1933
1934
1935
# File 'lib/rubysketch/processing.rb', line 1933

def sq (value)
  value * value
end

#tan(angle) ⇒ Numeric

Returns the ratio of the sine and cosine of an angle.

Parameters:

  • angle (Numeric)

    angle in radians

Returns:

  • (Numeric)

    the tangent



2115
2116
2117
# File 'lib/rubysketch/processing.rb', line 2115

def tan (angle)
  Math.tan angle
end

#touchEnded(&block) ⇒ Object



1755
1756
1757
1758
# File 'lib/rubysketch/processing.rb', line 1755

def touchEnded (&block)
  @touchEndedBlock__ = block if block
  nil
end

#touchesArray

Returns array of touches

Returns:

  • (Array)

    Touch objects



1844
1845
1846
# File 'lib/rubysketch/processing.rb', line 1844

def touches ()
  @touches__
end

#touchMoved(&block) ⇒ Object



1760
1761
1762
1763
# File 'lib/rubysketch/processing.rb', line 1760

def touchMoved (&block)
  @touchMovedBlock__ = block if block
  nil
end

#touchStarted(&block) ⇒ Object



1750
1751
1752
1753
# File 'lib/rubysketch/processing.rb', line 1750

def touchStarted (&block)
  @touchStartedBlock__ = block if block
  nil
end

#windowHeightObject



1780
1781
1782
# File 'lib/rubysketch/processing.rb', line 1780

def windowHeight ()
  @window__.height
end

#windowWidthObject



1776
1777
1778
# File 'lib/rubysketch/processing.rb', line 1776

def windowWidth ()
  @window__.width
end