该项目基于眼动仪。让我简要介绍一下该项目背后的想法,以便更好地理解我的问题。
我有 Tobii C 眼动仪的硬件。这个眼动仪将能够给出我正在看的地方的 X、Y 坐标。但这个装置非常敏感。当我看 1 个点时,眼动仪会发出许多不同的坐标数据,但在± 100
我发现的范围。即使您盯着 1 个点,您的眼睛也会不断移动,因此会给出许多数据。然后将这么多数据(浮点数)保存在文本文件中。现在我只需要 1 个数据(X 坐标),它表示我正在盯着的 1 个点,而不是± 100
范围并将其移动到新的文本文件。
我不知道应该如何编码来做到这一点。
这些是float
文本文件中的数字。
200
201
198
202
250
278
310
315
360
389
500
568
579
590
当我盯着点 1 时,数据是200-300
,它们都在± 100
范围。我想设置200
作为参考点用下一个数字减去自身,并检查结果值是否在范围内100
,如果是,请将其删除。参考点应继续对以下数字执行此操作,直到到达范围之外± 100
范围。一旦出了100
范围,现在的数字是310
,那么现在这个数字是下一个参考点,并执行相同的操作并用下面的数字减去并检查结果值是否在范围内100
。一旦出了100
范围,下一个数字是500
,现在,这是新的参考点,并做同样的事情。这就是我的目标。简而言之,参考点应移至新文件中。
到目前为止,这是我的代码,它获取注视坐标并将它们存储在文本文件中。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Tobii.Interaction;
namespace ConsoleApp1
{
class Program
{
private static void programintro()
{
Console.WriteLine("Press Any Keys To Start");
}
public static void Main(string[] args)
{
programintro();
Console.ReadKey();
double currentX = 0.0;
double currentY = 0.0;
double timeStampCurrent = 0.0;
double diffX = 0.0;
double diffY = 0.0;
int counter = 0;
var host = new Host();
host.EnableConnection();
var gazePointDataStream = host.Streams.CreateGazePointDataStream();
gazePointDataStream.GazePoint((gazePointX, gazePointY, timestamp) =>
{
diffX = gazePointX - currentX;
diffY = gazePointY - currentY;
currentX = gazePointX;
currentY = gazePointY;
timeStampCurrent = timestamp;
if (diffX > 100 || diffX <= -100 || diffY >= 100 || diffY <= -100)
{
counter++;
using (StreamWriter writer = new StreamWriter("C: \\Users\\Student\\Desktop\\FYP 2019\\ConsoleApp1\\ConsoleApp1\\Data\\TextFile1.txt", true))
{
writer.WriteLine("Recorded Data " + counter + "\n=================================================================================================================\nX: {0} Y:{1}\nData collected at {2}", currentX, currentY, timeStampCurrent);
writer.WriteLine("=================================================================================================================");
}
Console.WriteLine("Recorded Data " + counter + "\n=================================================================================================================\nX: {0} Y:{1}\nData collected at {2}", currentX, currentY, timeStampCurrent);
Console.WriteLine("=================================================================================================================");
}
});
//host.DisableConnection();
while (true)
{
if (counter < 10)
{
continue;
}
else
{
Environment.Exit(0);
}
}
现在我的问题是如何编码来读取文本文件并设置
参考数字并用下一个数字减去自身并检查
如果结果值在100
并有一个新的参考号,如果
它在外面的± 100
范围。这些参考号然后存储在
一个新的文本文件。