bdestombes 2 лет назад
Родитель
Сommit
dd2958f5aa
3 измененных файлов с 78 добавлено и 35 удалено
  1. 14 9
      backend/server.js
  2. 49 18
      frontend/assets/config.json
  3. 15 8
      frontend/index.html

+ 14 - 9
backend/server.js

@@ -317,16 +317,18 @@ app.post('/emitter/json', function (req, res) {
 
 				objTriangle.apex = getTop(objTriangle.dots);
 				objTriangle.center = [
-					(objTriangle.dots[0].x+objTriangle.dots[1].x+objTriangle.dots[2].x)/3 ,
-					(objTriangle.dots[0].y+objTriangle.dots[1].y+objTriangle.dots[2].y)/3
+					(objTriangle.dots[0].x + objTriangle.dots[1].x + objTriangle.dots[2].x) / 3,
+					(objTriangle.dots[0].y + objTriangle.dots[1].y + objTriangle.dots[2].y) / 3
 				];
 
-				objTriangle.angleApex = getAngleApex(objTriangle.dots, objTriangle.apex) ;
-				objTriangle.orientation = getOrientation(objTriangle.dots, objTriangle.apex) ;
+				objTriangle.angleApex = getAngleApex(objTriangle.dots, objTriangle.apex);
+				objTriangle.orientation = getOrientation(objTriangle.dots, objTriangle.apex);
 
-				if (req.body.debug) {
+				if (config.app.debug && config.app.debugLog.backend.emitter.apex) {
 					console.log('-- apex --', objTriangle.apex);
-					console.log('centerPos : ' + objTriangle.center + ' orientation : ' + objTriangle.orientation);
+					console.log('angle: ', objTriangle.angleApex);
+					console.log('centerPos: ' + objTriangle.center);
+					console.log('orientation: ' + objTriangle.orientation);
 				}
 			});
 
@@ -398,12 +400,16 @@ app.post('/emitter/json', function (req, res) {
 			// });
 			currentOscBundle = new Bundle ;
 			currentOscBundle.append([ '/tuio/2Dobj', 'alive', 1 ]);
-			if (objTriangle.dots != undefined) {
+			if (objTriangle.dots) {
+				const matchingObject = config.objects.find(item => {
+					return objTriangle.angleApex > item.apexAngle - config.app.matchingTolerance && objTriangle.angleApex < item.apexAngle + config.app.matchingTolerance;
+				});
+				console.log(matchingObject);
 				currentOscBundle.append([
 					'/tuio/2Dobj',
 					'set',
 					1,
-					1,
+					matchingObject ? matchingObject.apexAngle : 1,
 					objTriangle.center[0],
 					objTriangle.center[1],
 					// objTriangle.center[0] / req.body.screenW,
@@ -416,7 +422,6 @@ app.post('/emitter/json', function (req, res) {
 					0.0
 				]);
 			}
-
 			currentOscBundle.append(['/tuio/2Dobj', 'fseq', fseq]);
 			hasPending = true;
 			res.status(200).send();

+ 49 - 18
frontend/assets/config.json

@@ -2,38 +2,69 @@
 	"app": {
 		"oscUdpPort": 3333,
 		"httpPort": 5000,
-		"timerRefresh": 50,
+		"timerRefresh": 100,
 		"maxDistanceBetweenPoints": 750,
-		"debug": false,
+		"matchingTolerance": 2.5,
+		"debug": true,
 		"debugLog": {
 			"backend": {
 				"emitter": {
-					"httpRequest": true,
-					"dots": true,
-					"segments": true,
-					"triangles": true
+					"httpRequest": false,
+					"dots": false,
+					"segments": false,
+					"triangles": false,
+					"apex": false
 				},
 				"receiver": {
-					"oscDatagram": true
+					"oscDatagram": false
 				}
 			},
 			"frontend": {
 				"emitter": {
-					"screen": true,
-					"events": true
+					"screen": false,
+					"events": false
 				},
 				"receiver": {
-					"onAddTuioCursor": true,
-					"onUpdateTuioCursor": true,
-					"onRemoveTuioCursor": true,
-					"onAddTuioObject": true,
-					"onUpdateTuioObject": true,
-					"onRemoveTuioObject": true,
-					"onRefresh": true
+					"onAddTuioCursor": false,
+					"onUpdateTuioCursor": false,
+					"onRemoveTuioCursor": false,
+					"onAddTuioObject": false,
+					"onUpdateTuioObject": false,
+					"onRemoveTuioObject": false,
+					"onRefresh": false
 				}
 			}
 		},
-		"debugDisplay": true
+		"debugDisplay": false
 	},
-	"triangles": []
+	"objects": [
+		{
+			"name": "object1",
+			"apexAngle": 35
+		},
+		{
+			"name": "object2",
+			"apexAngle": 40
+		},
+		{
+			"name": "object2",
+			"apexAngle": 45
+		},
+		{
+			"name": "object4",
+			"apexAngle": 50
+		},
+		{
+			"name": "object5",
+			"apexAngle": 55
+		},
+		{
+			"name": "object6",
+			"apexAngle": 60
+		},
+		{
+			"name": "object7",
+			"apexAngle": 65
+		}
+	]
 }

+ 15 - 8
frontend/index.html

@@ -147,13 +147,17 @@
 				canvas.height = screenH;
 				context = canvas.getContext('2d');
 
-				const drawTriangle = (a, b, c) => {
+				const drawTriangle = (a, b, c, center) => {
 					context.clearRect(0, 0, canvas.width, canvas.height);
 					const path = new Path2D();
+					/*
 					path.moveTo(Math.round(a.x), Math.round(a.y));
 					path.lineTo(Math.round(b.x), Math.round(b.y));
 					path.lineTo(Math.round(c.x), Math.round(c.y));
-					context.fill(path);
+					*/
+					path.moveTo(Math.round(center.x), Math.round(center.y));
+					path.lineTo(Math.round(a.x), Math.round(a.y));
+					context.stroke(path);
 				};
 				const client = new Tuio.Client({
 					host: `http://localhost:${config.app.httpPort}`
@@ -230,13 +234,13 @@
 					const apexAngle = 35;
 					const mediatrice = 300;
 
-					if (config.app.debugDisplay) {
-						const x = updateObject.xPos;
-						const y = updateObject.yPos;
+					const convertedAngle = updateObject.angle < 0 ? 180 + updateObject.angle : updateObject.angle + 180;
 
+					console.log(updateObject.angle, convertedAngle);
+					if (config.app.debugDisplay) {
 						const apex = {
-							x: Math.cos(updateObject.angle * Math.PI / 180) * (mediatrice / 2) + x,
-							y: Math.sin(updateObject.angle * Math.PI / 180) * (mediatrice / 2) + y
+							x: Math.cos(updateObject.angle * Math.PI / 180) * (mediatrice / 2) + updateObject.xPos,
+							y: Math.sin(updateObject.angle * Math.PI / 180) * (mediatrice / 2) + updateObject.yPos
 						};
 						const b = {
 							x: Math.cos((apexAngle / 2) * Math.PI / 180) * (mediatrice / 2) + apex.x,
@@ -246,7 +250,10 @@
 							x: Math.cos((-1 * apexAngle / 2) * Math.PI / 180) * (mediatrice / 2) + apex.x,
 							y: Math.sin((-1 * apexAngle / 2) * Math.PI / 180) * (mediatrice / 2) + apex.y
 						};
-						drawTriangle(apex, b, c);
+						drawTriangle(apex, b, c, {
+							x: updateObject.xPos,
+							y: updateObject.yPos
+						});
 					}
 
 					if (config.app.debug && config.app.debugLog.frontend.receiver.onUpdateTuioObject) {