configure UI and more leapmotion examples
This commit is contained in:
		
							parent
							
								
									9b0c8ffc86
								
							
						
					
					
						commit
						ebe188592e
					
				
							
								
								
									
										295
									
								
								configureUI.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										295
									
								
								configureUI.py
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,295 @@ | |||||||
|  | 
 | ||||||
|  | #!/usr/bin/python3 | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | # -*- mode: Python -*- | ||||||
|  | ''' | ||||||
|  | LJay/LJ | ||||||
|  | v0.7.0 | ||||||
|  | 
 | ||||||
|  | Config HI | ||||||
|  | 
 | ||||||
|  | LICENCE : CC | ||||||
|  | ''' | ||||||
|  | 
 | ||||||
|  | import os | ||||||
|  | import configparser as cp | ||||||
|  | import tkinter as tk | ||||||
|  | import configparser | ||||||
|  | from libs3 import gstt | ||||||
|  | import ast | ||||||
|  | import numpy as np | ||||||
|  | import fileinput | ||||||
|  | from shutil import copyfile | ||||||
|  | 
 | ||||||
|  | config = configparser.ConfigParser() | ||||||
|  | config.read(gstt.ConfigName) | ||||||
|  | 
 | ||||||
|  | ljpath = r'%s' % os.getcwd().replace('\\','/') | ||||||
|  | 
 | ||||||
|  | def Write():  | ||||||
|  | 
 | ||||||
|  | 	print('Saving ',gstt.ConfigName) | ||||||
|  | 	updateJSConfig(config) | ||||||
|  | 	config.set('General', 'lasernumber', lasernumberVal.get()) | ||||||
|  | 	config.set('General', 'rediserverip', rediserveripVal.get()) | ||||||
|  | 	config.set('General', 'wwwip', wwwipVal.get()) | ||||||
|  | 	config.set('General', 'oscserverip', str(gstt.oscIPin)) | ||||||
|  | 	config.set('General', 'nozoscip', str(gstt.nozoscIP)) | ||||||
|  | 	config.set('General', 'debug',debugVal.get()) | ||||||
|  | 	config.set('General', 'autostart', autostartVal.get()) | ||||||
|  | 
 | ||||||
|  | 	for i in range(gstt.LaserNumber): | ||||||
|  | 		laser = 'laser' + str(i) | ||||||
|  | 		config.set(laser, 'ip', str(gstt.lasersIPS[i])) | ||||||
|  | 		config.set(laser, 'type', str(gstt.lasertype[i])) | ||||||
|  | 		config.set(laser, 'dac_family', str(gstt.dacs[i])) | ||||||
|  | 		config.set(laser, 'kpps', str(gstt.kpps[i])) | ||||||
|  | 		config.set(laser, 'centerx', str(gstt.centerX[i])) | ||||||
|  | 		config.set(laser, 'centery', str(gstt.centerY[i])) | ||||||
|  | 		config.set(laser, 'zoomx', str(gstt.zoomX[i])) | ||||||
|  | 		config.set(laser, 'zoomy', str(gstt.zoomY[i])) | ||||||
|  | 		config.set(laser, 'sizex', str(gstt.sizeX[i])) | ||||||
|  | 		config.set(laser, 'sizey', str(gstt.sizeY[i])) | ||||||
|  | 		config.set(laser, 'finangle', str(gstt.finANGLE[i])) | ||||||
|  | 		config.set(laser, 'swapx', str(gstt.swapX[i])) | ||||||
|  | 		config.set(laser, 'swapy', str(gstt.swapY[i])) | ||||||
|  | 		config.set(laser, 'warpdest', np.array2string(gstt.warpdest[i], precision=2, separator=',',suppress_small=True)) | ||||||
|  | 	config.write(open(gstt.ConfigName,'w')) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def Read():  | ||||||
|  | 	 | ||||||
|  | 	gstt.LaserNumber = config.getint('General', 'lasernumber') | ||||||
|  | 	gstt.RediServerIP= config.get('General', 'rediserverip') | ||||||
|  | 	gstt.wwwIP= config.get('General', 'wwwip') | ||||||
|  | 	gstt.oscIPin = config.get('General', 'oscserverip') | ||||||
|  | 	gstt.nozoscIP = config.get('General', 'nozoscip') | ||||||
|  | 	gstt.debug = config.get('General', 'debug') | ||||||
|  | 	gstt.plugins = ast.literal_eval(config.get('plugins', 'plugins')) | ||||||
|  | 	gstt.autostart = config.get('General', 'autostart') | ||||||
|  | 
 | ||||||
|  | 	for i in range(4): | ||||||
|  | 		laser = 'laser' + str(i) | ||||||
|  | 		gstt.lasersIPS[i]= config.get(laser, 'ip') | ||||||
|  | 		gstt.lasertype[i]= config.get(laser, 'type') | ||||||
|  | 		gstt.kpps[i] = config.getint(laser, 'kpps') | ||||||
|  | 		gstt.dacs[i] = config.get(laser, 'dac_family') | ||||||
|  | 		#gstt.lasersPLcolor[i] = config.getint(laser, 'color') | ||||||
|  | 		gstt.centerX[i]= config.getfloat(laser, 'centerx') | ||||||
|  | 		gstt.centerY[i] = config.getfloat(laser, 'centery') | ||||||
|  | 		gstt.zoomX[i] = config.getfloat(laser, 'zoomx') | ||||||
|  | 		gstt.zoomY[i] = config.getfloat(laser, 'zoomy') | ||||||
|  | 		gstt.sizeX[i] = config.getfloat(laser, 'sizex') | ||||||
|  | 		gstt.sizeY[i] = config.getfloat(laser, 'sizey') | ||||||
|  | 		gstt.finANGLE[i] = config.getfloat(laser, 'finangle') | ||||||
|  | 		gstt.swapX[i] = config.getint(laser, 'swapx') | ||||||
|  | 		gstt.swapY[i] = config.getint(laser, 'swapy') | ||||||
|  | 		gstt.lsteps[i] = ast.literal_eval(config.get(laser, 'lsteps')) | ||||||
|  | 		gstt.warpdest[i]= np.array(ast.literal_eval(config.get(laser, 'warpdest'))) | ||||||
|  | 
 | ||||||
|  | # | ||||||
|  | # UI | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | def UIelements(currentLaser): | ||||||
|  | 
 | ||||||
|  | 	tk.Label(UI, text='Lasers', fg='#FFFFB0',width = 10).grid(row=0, column=0) | ||||||
|  | 	tk.Label(UI, text='LJ IP',fg='#FFFF90').grid(row=0, column=2) | ||||||
|  | 	tk.Label(UI, text='www IP',fg='#FFFF80').grid(row=1, column=0) | ||||||
|  | 	tk.Label(UI, text='debug',fg='#FFFF90').grid(row=1, column=2) | ||||||
|  | 	tk.Label(UI, text='autostart',fg='#FFFF90').grid(row=2, column=0) | ||||||
|  | 	 | ||||||
|  | 	tk.Label(UI, text='Laser').grid(row=3, column=0) | ||||||
|  | 	tk.Label(UI, text='IP').grid(row=3, column=2) | ||||||
|  | 	tk.Label(UI, text='type').grid(row=4, column=0) | ||||||
|  | 	tk.Label(UI, text='dac').grid(row=4, column=2) | ||||||
|  | 	tk.Label(UI, text='kpps').grid(row=5, column=0) | ||||||
|  | 	tk.Label(UI, text='finangle').grid(row=5, column=2) | ||||||
|  | 	tk.Label(UI, text='centerx').grid(row=6, column=0) | ||||||
|  | 	tk.Label(UI, text='centery').grid(row=6, column=2) | ||||||
|  | 	tk.Label(UI, text='zoomx').grid(row=7, column=0) | ||||||
|  | 	tk.Label(UI, text='zoomy').grid(row=7, column=2) | ||||||
|  | 	tk.Label(UI, text='sizex').grid(row=8, column=0) | ||||||
|  | 	tk.Label(UI, text='sizey').grid(row=8, column=2) | ||||||
|  | 	tk.Label(UI, text='swapx').grid(row=9, column=0) | ||||||
|  | 	tk.Label(UI, text='swapy').grid(row=9, column=2) | ||||||
|  | 	tk.Label(UI, text='lsteps').grid(row=10, column=0) | ||||||
|  | 	tk.Label(UI, text='warpdest').grid(row=10, column=2) | ||||||
|  | 	tk.Label(UI, text='color').grid(row=11, column=0) | ||||||
|  | 	lasernumberVal.set(str(gstt.LaserNumber)) | ||||||
|  | 	rediserveripVal.set(str(gstt.RediServerIP)) | ||||||
|  | 	wwwipVal.set(str(gstt.wwwIP)) | ||||||
|  | 	debugVal.set(str(gstt.debug)) | ||||||
|  | 	autostartVal.set(str(gstt.autostart)) | ||||||
|  | 	laserVal.set(str(currentLaser)) | ||||||
|  | 
 | ||||||
|  | 	lasernumber = tk.Entry(UI,fg='#FFFFA0', textvariable = lasernumberVal) | ||||||
|  | 	rediserverip  = tk.Entry(UI,textvariable =rediserveripVal) | ||||||
|  | 	wwwip = tk.Entry(UI, textvariable =wwwipVal) | ||||||
|  | 	oscserverip = tk.Entry(UI) | ||||||
|  | 	nozoscip = tk.Entry(UI) | ||||||
|  | 	debug = tk.Entry(UI, textvariable =debugVal) | ||||||
|  | 	autostart = tk.Entry(UI, textvariable =autostartVal) | ||||||
|  | 	dac = tk.Entry(UI, textvariable =dacVal) | ||||||
|  | 	laser = tk.Entry(UI, textvariable =laserVal) | ||||||
|  | 	#laser.bind('<Return>', validate(laserVal.get())) | ||||||
|  | 	#laser.bind('<Enter>', validate(laserVal.get())) | ||||||
|  | 	laser.bind('<Return>', (lambda _: validate(laserVal.get()))) | ||||||
|  | 	laser.bind('<Enter>', (lambda _: validate(laserVal.get()))) | ||||||
|  | 	 | ||||||
|  | 	#ipVal = tk.StringVar() | ||||||
|  | 	ip = tk.Entry(UI, textvariable =ipVal) | ||||||
|  | 	ip.bind('<Return>', (lambda _: Update('ip', ipVal.get()))) | ||||||
|  | 	type = tk.Entry(UI, textvariable =typeVal) | ||||||
|  | 	dac = tk.Entry(UI, textvariable =dacVal) | ||||||
|  | 	kpps = tk.Entry(UI, textvariable =kppsVal) | ||||||
|  | 	color = tk.Entry(UI, textvariable =colorVal) | ||||||
|  | 	centerx = tk.Entry(UI, textvariable =centerxVal) | ||||||
|  | 	centery = tk.Entry(UI, textvariable =centeryVal) | ||||||
|  | 	zoomxVal.set(str(gstt.zoomX[currentLaser])) | ||||||
|  | 	zoomx = tk.Entry(UI, textvariable =zoomxVal) | ||||||
|  | 	zoomy = tk.Entry(UI, textvariable =zoomyVal) | ||||||
|  | 	sizexVal.set(str(gstt.sizeX[currentLaser])) | ||||||
|  | 	sizex = tk.Entry(UI, textvariable =sizexVal) | ||||||
|  | 	sizey = tk.Entry(UI, textvariable =sizeyVal) | ||||||
|  | 	finangle = tk.Entry(UI, textvariable =finangleVal) | ||||||
|  | 	swapx = tk.Entry(UI, textvariable =swapxVal) | ||||||
|  | 	swapy = tk.Entry(UI, textvariable =swapyVal) | ||||||
|  | 	lsteps = tk.Entry(UI, textvariable =lstepsVal) | ||||||
|  | 	warpdest = tk.Entry(UI, textvariable =warpdestVal) | ||||||
|  | 	 | ||||||
|  | 	lasernumber.grid(row=0, column=1,padx=10) | ||||||
|  | 	rediserverip.grid(row=0, column=3,padx=10) | ||||||
|  | 	wwwip.grid(row=1, column=1) | ||||||
|  | 	debug.grid(row=1, column=3) | ||||||
|  | 	autostart.grid(row=2, column=1) | ||||||
|  | 
 | ||||||
|  | 	laser.grid(row=3, column=1) | ||||||
|  | 	ip.grid(row=3, column=3) | ||||||
|  | 	type.grid(row=4, column=1) | ||||||
|  | 	dac.grid(row=4, column=3) | ||||||
|  | 	kpps.grid(row=5, column=1) | ||||||
|  | 	finangle.grid(row=5, column=3) | ||||||
|  | 	centerx.grid(row=6, column=1) | ||||||
|  | 	centery.grid(row=6, column=3) | ||||||
|  | 	zoomx.grid(row=7, column=1) | ||||||
|  | 	zoomy.grid(row=7, column=3) | ||||||
|  | 	sizex.grid(row=8, column=1) | ||||||
|  | 	sizey.grid(row=8, column=3) | ||||||
|  | 	swapx.grid(row=9, column=1) | ||||||
|  | 	swapy.grid(row=9, column=3) | ||||||
|  | 	lsteps.grid(row=10, column=1) | ||||||
|  | 	warpdest.grid(row=10, column=3) | ||||||
|  | 	color.grid(row=11, column=1) | ||||||
|  | 
 | ||||||
|  | 	save = tk.Button(UI, text="Save", command=Write).grid(row=12, column=1) | ||||||
|  | 	ok = tk.Button(UI, text="Ok", command=Exit).grid(row=12, column=3) | ||||||
|  | 
 | ||||||
|  | 	UI.title(string='LJ2 config') | ||||||
|  | 	 | ||||||
|  | 
 | ||||||
|  | def Exit(): | ||||||
|  |   UI.destroy() | ||||||
|  | 
 | ||||||
|  | def validate(input): | ||||||
|  | 
 | ||||||
|  | 	 | ||||||
|  | 	data =str(input) | ||||||
|  | 	if data.isdigit(): | ||||||
|  | 		#print(input+" is digit") | ||||||
|  | 		UIpdateLaser(int(data)) | ||||||
|  | 		return True | ||||||
|  | 	 | ||||||
|  | 	elif input == "": | ||||||
|  | 		print(input+ "is null") | ||||||
|  | 		return True | ||||||
|  | 	 | ||||||
|  | 	else: | ||||||
|  | 		print(input) | ||||||
|  | 		return False | ||||||
|  | 
 | ||||||
|  | def updateJSConfig(config): | ||||||
|  |     global ljpath | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     wwwip   = config.get('General','wwwip') | ||||||
|  |     wstype  = config.get('General','wstype') | ||||||
|  |     wsport  = config.get('General','wsport') | ||||||
|  |     # copy template | ||||||
|  |     src = ljpath + "/templates/config.js"   | ||||||
|  |     dst = ljpath + "/www/config.js"  | ||||||
|  |     copyfile(src, dst) | ||||||
|  |     # Interpolate variables | ||||||
|  |     with fileinput.FileInput(dst, inplace=True) as file: | ||||||
|  |         for line in file: | ||||||
|  |             line = line.replace("%wstype%", wstype) | ||||||
|  |             line = line.replace("%wsport%", wsport) | ||||||
|  |             line = line.replace("%wwwip%", wwwip) | ||||||
|  |             print(line, end='') | ||||||
|  |     print('www UI updated.') | ||||||
|  | 
 | ||||||
|  | def Updategstt(var, value): | ||||||
|  | 	print("modify ",var," with ",value) | ||||||
|  | 	#var=value | ||||||
|  | 	config.set('laser' + laserVal.get(), var, value) | ||||||
|  | 	config.write | ||||||
|  | 
 | ||||||
|  | def Update(var, value): | ||||||
|  | 	print("modify ",var," with ",value) | ||||||
|  | 	#var=value | ||||||
|  | 	config.set('laser' + laserVal.get(), var, value) | ||||||
|  | 	config.write | ||||||
|  | 
 | ||||||
|  | def UIpdateLaser(number): | ||||||
|  | 
 | ||||||
|  | 	#print('updating with laser : ', number) | ||||||
|  | 	ipVal.set(str(gstt.lasersIPS[number])) | ||||||
|  | 	typeVal.set(str(gstt.lasertype[number])) | ||||||
|  | 	dacVal.set(str(gstt.dacs[number])) | ||||||
|  | 	kppsVal.set(str(gstt.kpps[number])) | ||||||
|  | 	colorVal.set("Not implemented") | ||||||
|  | 	dacVal.set(str(gstt.dacs[number])) | ||||||
|  | 	centerxVal.set(str(gstt.centerX[number])) | ||||||
|  | 	centeryVal.set(str(gstt.centerY[number])) | ||||||
|  | 	zoomxVal.set(str(gstt.zoomX[number])) | ||||||
|  | 	zoomyVal.set(str(gstt.zoomY[number])) | ||||||
|  | 	sizexVal.set(str(gstt.sizeX[number])) | ||||||
|  | 	sizeyVal.set(str(gstt.sizeY[number])) | ||||||
|  | 	finangleVal.set(str(gstt.finANGLE[number])) | ||||||
|  | 	swapxVal.set(str(gstt.swapX[number])) | ||||||
|  | 	swapyVal.set(str(gstt.swapY[number])) | ||||||
|  | 	lstepsVal.set(str(gstt.lsteps[number])) | ||||||
|  | 	warpdestVal.set(str(gstt.warpdest[number])) | ||||||
|  | 
 | ||||||
|  | UI = tk.Tk() | ||||||
|  | 
 | ||||||
|  | lasernumberVal = tk.StringVar() | ||||||
|  | rediserveripVal = tk.StringVar() | ||||||
|  | wwwipVal = tk.StringVar() | ||||||
|  | debugVal = tk.StringVar() | ||||||
|  | autostartVal = tk.StringVar() | ||||||
|  | 
 | ||||||
|  | laserVal = tk.StringVar() | ||||||
|  | ipVal = tk.StringVar() | ||||||
|  | typeVal = tk.StringVar() | ||||||
|  | dacVal = tk.StringVar() | ||||||
|  | kppsVal = tk.StringVar() | ||||||
|  | colorVal = tk.StringVar() | ||||||
|  | centerxVal = tk.StringVar() | ||||||
|  | centeryVal = tk.StringVar() | ||||||
|  | zoomxVal = tk.StringVar() | ||||||
|  | zoomyVal = tk.StringVar() | ||||||
|  | sizexVal = tk.StringVar() | ||||||
|  | sizeyVal = tk.StringVar()	 | ||||||
|  | finangleVal = tk.StringVar()	 | ||||||
|  | swapxVal = tk.StringVar() | ||||||
|  | swapyVal = tk.StringVar() | ||||||
|  | lstepsVal  = tk.StringVar() | ||||||
|  | warpdestVal = tk.StringVar() | ||||||
|  | 
 | ||||||
|  | currentLaser =0 | ||||||
|  | Read() | ||||||
|  | UIelements(currentLaser) | ||||||
|  | UIpdateLaser(currentLaser) | ||||||
|  | #UI.update_lasernumber(str(gstt.LaserNumber)) | ||||||
|  | UI.mainloop() | ||||||
							
								
								
									
										54
									
								
								examples/Processing/leapdots/leapdots.pde
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								examples/Processing/leapdots/leapdots.pde
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | import redis.clients.jedis.Jedis; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import com.onformative.leap.LeapMotionP5; | ||||||
|  | import com.leapmotion.leap.Finger; | ||||||
|  | 
 | ||||||
|  | LeapMotionP5 leap; | ||||||
|  | ArrayList<PVector> points = new ArrayList<PVector>(); | ||||||
|  | 
 | ||||||
|  | int rgb2int(int r, int g, int b) { | ||||||
|  |   return (r << 16) + (g << 8) + b; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void setup() { | ||||||
|  |   size(640, 360); | ||||||
|  |   leap = new LeapMotionP5(this); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void draw() { | ||||||
|  |   background(51); | ||||||
|  |   stroke(255); | ||||||
|  |   strokeWeight(2); // adjust the thickness of the circle outline | ||||||
|  | 
 | ||||||
|  |   for (Finger finger : leap.getFingerList()) { | ||||||
|  |     PVector fingerPos = leap.getTip(finger); | ||||||
|  |     points.add(fingerPos); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (points.size() > 0) { | ||||||
|  |     String pointList = "["; // initialize the point list string | ||||||
|  |     for (int i = 0; i < points.size(); i++) { | ||||||
|  |       PVector center = points.get(i); | ||||||
|  |       pointList += "(" + center.x + "," + center.y + ",0),"; | ||||||
|  |       int[] rgb = {254, 254, 254}; | ||||||
|  |       for (int j = 0; j < 15; j++) { // Update the loop to generate 30 points per circle | ||||||
|  |         float angle = map(j, 0, 15, 0, TWO_PI); | ||||||
|  |         float x = center.x + cos(angle) * 5; | ||||||
|  |         float y = center.y + sin(angle) * 5; | ||||||
|  |         pointList += "(" + x + "," + y + "," + rgb2int(rgb[0], rgb[1], rgb[2]) + "),"; | ||||||
|  |         if (j > 0) { | ||||||
|  |           float prevX = center.x + cos(map(j - 1, 0, 15, 0, TWO_PI)) * 10; | ||||||
|  |           float prevY = center.y + sin(map(j - 1, 0, 15, 0, TWO_PI)) * 10; | ||||||
|  |           line(prevX, prevY, x, y); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     points.clear(); | ||||||
|  |     pointList = pointList.substring(0, pointList.length() - 1); // remove the last comma | ||||||
|  |     pointList += "]"; // close the point list string | ||||||
|  |     System.out.println(pointList); | ||||||
|  |     Jedis jedis = new Jedis("localhost"); | ||||||
|  |     jedis.set("/pl/0/0", pointList); | ||||||
|  |     jedis.close(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,40 @@ | |||||||
|  | import redis.clients.jedis.Jedis; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | 
 | ||||||
|  | ArrayList<PVector> points = new ArrayList<PVector>(); | ||||||
|  | 
 | ||||||
|  | int rgb2int(int[] rgb) { | ||||||
|  |   return color(rgb[0], rgb[1], rgb[2]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void setup() { | ||||||
|  |   size(640, 360); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void draw() { | ||||||
|  |   background(51); | ||||||
|  |   stroke(255); | ||||||
|  |   strokeWeight(2); // adjust the thickness of the circle outline | ||||||
|  |   if (mousePressed) { | ||||||
|  |     PVector p = new PVector(mouseX, mouseY); | ||||||
|  |     points.add(p); | ||||||
|  |     noFill(); // disable filling | ||||||
|  |     ellipse(p.x, p.y, 10, 10); // draw a circle with lines at the point | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   if (points.size() > 0) { | ||||||
|  |     String pointList = "["; | ||||||
|  |     for (int i = 0; i < points.size(); i++) { | ||||||
|  |       PVector p = points.get(i); | ||||||
|  |       int[] rgb = {255, 255, 255}; | ||||||
|  |       pointList += "(" + p.x + "," + p.y + "," + rgb2int(rgb) + "),"; | ||||||
|  |     } | ||||||
|  |     pointList = pointList.substring(0, pointList.length() - 1); // remove the last comma | ||||||
|  |     pointList += "]"; | ||||||
|  |     System.out.println(pointList); | ||||||
|  | 
 | ||||||
|  |     Jedis jedis = new Jedis("localhost"); | ||||||
|  |     jedis.set("/pl/0/0", pointList); | ||||||
|  |     jedis.close(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -8,7 +8,7 @@ int rgb2int(int r, int g, int b) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void setup() { | void setup() { | ||||||
|   size(640, 360);  |   size(400, 200);  | ||||||
|   noStroke(); |   noStroke(); | ||||||
|   rectMode(CENTER); |   rectMode(CENTER); | ||||||
| } | } | ||||||
| @ -29,6 +29,7 @@ void draw() { | |||||||
|   points.add(new PVector(mouseX-rect1Width/2, height/2-rect1Height/2)); |   points.add(new PVector(mouseX-rect1Width/2, height/2-rect1Height/2)); | ||||||
|   points.add(new PVector(mouseX+rect1Width/2, height/2-rect1Height/2)); |   points.add(new PVector(mouseX+rect1Width/2, height/2-rect1Height/2)); | ||||||
|   points.add(new PVector(mouseX+rect1Width/2, height/2+rect1Height/2)); |   points.add(new PVector(mouseX+rect1Width/2, height/2+rect1Height/2)); | ||||||
|  |   points.add(new PVector(mouseX-rect1Width/2, height/2+rect1Height/2)); | ||||||
|   points.add(new PVector(mouseX-rect1Width/2, height/2-rect1Height/2)); |   points.add(new PVector(mouseX-rect1Width/2, height/2-rect1Height/2)); | ||||||
|   // Draw second rectangle using lines |   // Draw second rectangle using lines | ||||||
|   int inverseX = width-mouseX; |   int inverseX = width-mouseX; | ||||||
| @ -43,6 +44,7 @@ void draw() { | |||||||
|   points.add(new PVector(inverseX+rect2Width/2, height/2-rect2Height/2)); |   points.add(new PVector(inverseX+rect2Width/2, height/2-rect2Height/2)); | ||||||
|   points.add(new PVector(inverseX+rect2Width/2, height/2+rect2Height/2)); |   points.add(new PVector(inverseX+rect2Width/2, height/2+rect2Height/2)); | ||||||
|   points.add(new PVector(inverseX-rect2Width/2, height/2+rect2Height/2)); |   points.add(new PVector(inverseX-rect2Width/2, height/2+rect2Height/2)); | ||||||
|  |   points.add(new PVector(inverseX-rect2Width/2, height/2-rect2Height/2)); | ||||||
|   if (points.size() > 0) { |   if (points.size() > 0) { | ||||||
|     println("point size : "+points.size()); |     println("point size : "+points.size()); | ||||||
|     println("pointlist"); |     println("pointlist"); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user