mirror of
https://github.com/Xevion/processing-projects.git
synced 2025-12-06 09:16:02 -06:00
bubble color sort
This commit is contained in:
62
sorting/ColorSort/ColorSort.pyde
Normal file
62
sorting/ColorSort/ColorSort.pyde
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import colorsys, random
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
size(360 * 2, 360 * 2)
|
||||||
|
global array, carray
|
||||||
|
frameRate(1000)
|
||||||
|
|
||||||
|
array = [x for x in range(max(width, height))]
|
||||||
|
carray = [getRGB(x, precision=max(width, height)) for x in array]
|
||||||
|
|
||||||
|
combined = zip(array, carray)
|
||||||
|
random.shuffle(combined)
|
||||||
|
array[:], carray[:] = zip(*combined)
|
||||||
|
noLoop()
|
||||||
|
|
||||||
|
def getRGB(n, precision=360.0):
|
||||||
|
r, g, b = colorsys.hsv_to_rgb(n / float(precision), 1, 1)
|
||||||
|
return r * 255, g * 255, b * 255
|
||||||
|
|
||||||
|
def getRGBArray(array):
|
||||||
|
out = [getRGB(x, precision=len(array)) for x in array]
|
||||||
|
return out
|
||||||
|
|
||||||
|
def randHSV():
|
||||||
|
h = random.random()
|
||||||
|
r, g, b = colorsys.hsv_to_rgb(h, 1, 1)
|
||||||
|
return r * 255, g * 255, b * 255
|
||||||
|
|
||||||
|
def visualize(array, carray):
|
||||||
|
for pos, value in enumerate(array):
|
||||||
|
r, g, b = carray[pos]
|
||||||
|
stroke(r, g, b)
|
||||||
|
line((width/2) - value/2, pos, (width/2) + value/2, pos)
|
||||||
|
|
||||||
|
def bubbleSort(array, carray):
|
||||||
|
def swap(x1, x2):
|
||||||
|
array[x1], array[x2] = array[x2], array[x1]
|
||||||
|
carray[x1], carray[x2] = carray[x2], carray[x1]
|
||||||
|
for pos, value in enumerate(array[:-1]):
|
||||||
|
if value > array[pos + 1]:
|
||||||
|
swap(pos, pos+1)
|
||||||
|
return array, carray
|
||||||
|
|
||||||
|
def pieChartRender(diameter, array, carray=None):
|
||||||
|
lastAngle = 0
|
||||||
|
div = 360.0 / len(array)
|
||||||
|
|
||||||
|
for pos, var in enumerate(array):
|
||||||
|
fill(*carray[pos])
|
||||||
|
arc(width/2, height/2, diameter, diameter, lastAngle, lastAngle + radians(div))
|
||||||
|
lastAngle += radians(div)
|
||||||
|
|
||||||
|
i = 1
|
||||||
|
array = []
|
||||||
|
def draw():
|
||||||
|
global array, carray
|
||||||
|
background(255)
|
||||||
|
pieChartRender(width-10, array, carray)
|
||||||
|
array, carray = bubbleSort(array, carray)
|
||||||
|
|
||||||
|
def mouseClicked():
|
||||||
|
loop()
|
||||||
2
sorting/ColorSort/sketch.properties
Normal file
2
sorting/ColorSort/sketch.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
mode=Python
|
||||||
|
mode.id=jycessing.mode.PythonMode
|
||||||
@@ -8,4 +8,6 @@ Sketches that visualize sorting algorithms as they progress.
|
|||||||
|
|
||||||
- **cocktail_shaker_line** - Sorting of a line using the cocktail shaker algorithm (double bouble sort I believe). Needs reworking as the colors and movement of the line is not as expected (colors shift, movement doesn't properly correlate).
|
- **cocktail_shaker_line** - Sorting of a line using the cocktail shaker algorithm (double bouble sort I believe). Needs reworking as the colors and movement of the line is not as expected (colors shift, movement doesn't properly correlate).
|
||||||
|
|
||||||
- **insertion_sort_line** - Sorting of a line using the insertion sort algorithm.
|
- **insertion_sort_line** - Sorting of a line using the insertion sort algorithm.
|
||||||
|
|
||||||
|
- **ColorSort** - Spherical rainbow sorted using simple Bubblesort (?) algorithm. Probably the sketch I am most proud of in the sorting category, as the sphere representation was difficult to create ande model.
|
||||||
Reference in New Issue
Block a user