本发明涉及互联网技术领域,尤其是一种模拟转盘及其生成方法。
背景技术:
抽奖、抓阄、娱乐是人们常见的活动,而这种活动中,特别是抽奖人们常用到转盘。传统的转盘通常体积较大,携带搬运非常不方便;而且转盘上内容需要定制,一旦定制完毕,修改非常不方便;传统的转盘由于其材质不均匀,让使用者觉得有造假的可能,降低参与者的信任度。
目前随着互联网的发展,网上也出现了一些模拟转盘,用来进行线上抽奖;但这种转盘通常是通过点击按钮开始旋转,而且旋转的速度无规律可循,和物理世界的转盘差异巨大,通常可以通过算法改变最终的结果,使人们难以信任其公平性。
技术实现要素:
本发明的发明目的在于:针对上述存在的问题,提供一种模拟现实转盘的模拟转盘,具有真正的随机性、公平性,其部署方便、配置简单,内容丰富,独特的转动音效和手势操作增加了用户的参与感;可部署于web、pc及手机等智能设备,可用来进行抽奖,抓阄,娱乐等。
本发明采用的技术方案如下:
本发明一种模拟转盘的生成方法,包括:建立转盘初始数据,对初始数据进行配置;绘制转盘界面;建立手势移动和转盘转动的联动关系,手势触发转盘转动;设定转盘停止转动的触发条件,控制转盘停止转动;计算转盘转动的结果。
进一步,所述数据配置的方法,包括:
s11后台可通过txt、excel、xml配置初始数据;
s12转盘程序启动后加载s11中的配置数据,写入数据库文件;
s13转盘程序运行过程中,可动态修改数据库文件。
进一步,所述绘制转盘界面的方法,包括:在画布上分别绘制转盘框架背景和转盘上方箭头指针,以及分割线和文字。
进一步,所述绘制分割线和文字的方法,包括:
s231根据配置数据,确定转盘均分的份数f;
s232计算每份所占度数d=360°/f;
s233确定转盘框架背景中心所在的坐标点p0;
s234确定转盘框架背景最右方所在的坐标点p1;
s235在画布上沿着坐标点p0到p1绘制出分割线;
s236将画布顺时针旋转度数d/2;
s237在抽奖内容中取一份文字,绘制在坐标p1点附近;
s238将画布顺时针旋转度数d/2;
s239重复步骤s235~s238,直到绘制出完整分割线和文字。
进一步,所述手势移动和转盘转动的联动方法,包括:
s31设定重绘最小移动距离δt;设置当前旋转角度α,并初始化为0;
s32获取步骤s233的中心点坐标p0;
s33记录手指按下时坐标p1;
s34记录手指移动后坐标p2;
s35计算变换的角度δα;
s36界面重绘,为当前旋转角度α重新赋值,α1=α+δα,将画布旋转新的α1值;
s37在步骤s35求出δα后,将p2点的值复制给p1点,重复s34~s36步骤。
进一步,所述转盘停止转动的控制方法,包括:
s41设定停止时速率v,设定当前速率s;
s42手指离开转盘后,计算初始速率v,并将初始速率v赋值给当前速率s;
s43根据公式α2=α+s,将α2加上当前速率s,重新给当前角度α2赋值,将画布旋转新的α2值;
s44重新计算当前速率s1,设定衰减系数c,所述衰减系数c大于0并且小于1,将s和衰减系数c求积,当前速率s1=s*c,将当前速率s1赋值给s;
s45判断当前速率s1是否小于等于v,若小于等于v则触发停止事件,若大于,则重复步骤s43~s45。
进一步,所述计算转盘转动结果的方法,包括:
s51当s45触发停止事件后,将步骤s43得到的当前角度α2转换为360°以内的角度a,a=α2%360;
s52当a为负时,a加上360°为最终的度数a;
s53根据步骤s232的每份所占度数d与每项转盘内容之间的关系,求得最终的度数a对应的转盘内容。
进一步,还包括在转盘转动中,进行音效播放,所述音效播放的方法,包括:
s61给上次旋转度数pα赋值为0;
s62每次界面重绘时,计算α-pα是否大于步骤s232中得到的d;
s63若步骤s62得到的值大于d则播放音效,且将α的值复制给pα;
s64循环步骤s62~s63,直到步骤s45触发停止事件。
进一步,所述手势移动和转盘转动的联动中,手势触发转盘的方法包括传感器触发,传感器触发转动的方法,包括:
s71设定传感器触发转动的阀值f;
s72当传感器的检测值大于f时,将传感器的检测值复制给步骤s42的初速度s,然后继续步骤s42~s45。
本发明一种模拟转盘,包括:转盘框架、转盘指针、转盘内容自动生成模块、手势联动模块、转盘停止转动模块、转动结果计算模块和传感器;所述转盘框架上安装有转盘指针;所述转盘内容自动生成模块,用于将输入的字符自动等分成若干份,每份中显示对应的文字;所述手势联动模块,用于将手势移动和转盘转动关联,当手势移动,转盘会相应的转动;所述转盘停止转动模块,根据设定的停止转动事件的触发条件,用于控制转盘停止转动;所述转动结果计算模块,用于计算转盘停止后指针指向的转盘内容;所述传感器,用于检测手指的按压和移动;还包括音效播放模块,所述音效播放模块,用于在转动中播放音效。
工作原理:程序化模拟现实世界的转盘;在画布上绘制转盘框架、转盘指针;根据输入的文字,通过等分线自动将转盘框架等分成若干份数,每份中显示对应的文字用来生成转盘内容界面;通过手势移动和转盘转动联动,采用手势、鼠标滑动或传感器数据模拟手势转动转盘;其中,转盘的转动方向和手势相同,转盘转动的起始速度和手势滑动的速度成正比;转盘转动后基于算法平滑停止转盘;根据肉眼或算法计算出最终转动结果。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、能够实现转盘结果的随机性和公平性;转盘是基于手势的移动速度,逐渐的衰减,随机的停止,只能计算结果,不能通过算法控制结果,同时不受转盘材质的影响,达到比现实转盘更好的随机性。
2、手势操作,增加体感,更接近现实世界的转盘,现有的模拟转盘只是采用点击触发,然后通过算法控制转盘转动,没有达到手势控制转盘转动的效果,同时像现实转盘一样基于速度的变化控制转盘转动停止。
3、在转动中实现的音效播放,能够增加了用户的参与感。
4、用户可自动设置转盘内容,自由更换转盘内容,可重复使用,设置方便,内容丰富。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是本发明一种模拟转盘的生成方法的流程图。
图2是实施例二模拟转盘的生成方法流程图。
图3是本发明中计算变换的角度δα的方法示意图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
实施例一:
如图1,本发明一种模拟转盘的生成方法,包括:建立转盘初始数据,对初始数据进行配置;绘制转盘界面;建立手势移动和转盘转动的联动关系,手势触发转盘转动;设定转盘停止转动的触发条件,控制转盘停止转动;计算转盘转动的结果。
实施例二:
如图2,先进行抽奖数据的配置,然后在画布上绘制转盘界面;检测手指是否按下和移动;当手指移动后,检测手指是否离开转盘,若手指没有离开转盘,检测手指移动的距离是否大于最小距离,若大于,旋转画布重绘界面;若手指离开转盘,判断转盘速率是否大于最小速率;若是,对当前角度重新赋值,旋转画布重绘界面;判断当前的角度是否大于上次角度;若是,播放音效,衰减当前速率;若否,直接衰减当前速率;衰减当前速率后,判断当前的速率是否大于停止速率,若否,回到对当前角度重新赋值步骤,若是,进行抽奖结果计算。
抽奖数据配置
1.1后台可通过txt、excel、xml等配置初始数据;
1.2程序启动后加载1.1配置数据,写入数据库文件;
1.3程序运行过程中,可以动态修改数据库文件。
界面绘制
2.1绘制转盘框架背景在画布上;
2.2绘制转盘上方箭头指针在画布上;
2.3绘制分割线和文字;
2.3.1根据1.2或1.3的数据,确定转盘均分份数f;
2.3.2每份所占度数d=360°/f;
2.3.3计算出转盘框架背景中心所在的坐标点p0;
2.3.4计算出转盘框架背景最右方所在的坐标点p1;
2.3.5沿着坐标点p0到p1绘制出分割线在画布上;
2.3.6将画布顺时针旋转度数d/2
2.3.6在抽奖内容中取一份文字绘制在坐标p1点附近;
2.3.7将画布顺时针旋转度数d/2;
2.3.8重复步骤2.3.5~2.3.7,直到绘制出完整分割线和文字。
手势联动
手势联动就是实现手势的移动就像在真实的转盘上移动一样,转盘会跟随手指的移动而同方向、同速度转动;
3.1设定重绘最小移动距离δt,防止因为手势微小移动而出现界面抖动,设置变量当前旋转角度α并初始化为0;
3.2获取2.3.3的中心点坐标p0;
3.3记录手指按下时坐标p1;
3.4记录手指移动后坐标p2;
3.5计算变换的角度δα;
如图3,3.5.1若p2的x轴-p1的x轴的绝对值大于δt或者p2的y轴-p1的y轴的绝对值大于δt,则可计算出变化的角度δα;
3.5.2δα的计算公式
3.5.2.1先求p2(x2,y2)所在的点与转盘中心点p0(x0,y0)构成的边相对于x轴的弧度,将所得弧度转换为角度;
3.5.2.2再求p1(x1,y1)所在的点与转盘中心点p0(x0,y0)构成的边相对于x轴的弧度,将所得弧度转换为角度;
3.5.2.3.将步骤3.5.2.1的角度减去步骤3.5.2.2的角度即为变化的角度δα;
3.6界面重绘,为当前旋转角度α重新赋值,α1=α+δα,然后将画布旋转新的α1值,这样就达到了转动的效果。
3.7在步骤3.5.2.4求出δα后,将p2点的值复制给p1点,然后重复3.4~3.6步骤,这样就达到了手势联动效果。
在手势联动中,模拟手势触发转盘转动的方法包括检测手指的移动、鼠标滑动或设置传感器来接收其他变化信息,触发转盘转动,如晃动手机,摇一摇。
转动效果与停止转动事件的触发
4.1设定停止时速率v;
4.2求出初始速率v,当手指离开转盘后,可根据手指移动的距离和时间,计算出初始速率v;并将初始速率v赋值给当前速率s;
4.3给当前角度α2重新赋值,我们可以将α加上当前速率s,重新给α2赋值,公式为α2=α+s将画布旋转新的α2值,这样就达到了转动的效果;
4.4重新计算当前速率s1,约定衰减系数c(系数需大于0并且小于1,系数越大衰减越快),将s和衰减系数求积,公式为s1=s*c;
4.5判断s1是否小于等于v,如果小于等于v则触发停止事件,如果没有,则重复步骤4.3~4.5。
结果计算
5.1当4.5触发停止事件后,我们可以由步骤4.3得到当前角度α1;
5.2求出将α1转换为360°以内的角度a,由于α是累加得出,我们对α求余即可,公式为a=α%360,%为求余数;
5.3由于我们可以顺时针和逆时针旋转,固由5.2求出的a可能为负,当为负时,我们可以根据数学原理加上360°即可求出最终的度数a;
5.4由步骤2.3.2我们可以知道每份所占度数d,那么我们就知道了的每个奖项对应的度数,若我们一共设置了3个奖项,那么d为120°,第一个奖项的范围为大于等于0且小于120,第二个为大于等于120且小于240,第三个为大于等于240且小于360,当奖项数不一样时。
音效播放
在转盘转动中,步骤4.3后,若当前的角度大于上次角度进行音效播放,所述音效播放的方法,包括:
6.1给上次旋转度数pα赋值为0;
6.2每次界面重绘时,计算α-pα是否大于2.3.2得到的d;
6.3如果步骤6.2得到的值大于d则播放音效,且将α的值复制给pα;
6.4循环步骤6.2~6.3直到步骤4.5触发停止事件。
传感器使用
7.1设传感器触发转动的阀值f;
7.2在智能移动设备上一般配有加速度传感器,晃动设备时,当传感器的值大于f时,我们触发将传感器的值复制给步骤4.2的初速度s,然后继续步骤4.2~4.5。
实施例三:
本发明一种模拟转盘,包括:转盘框架、转盘指针、转盘内容自动生成模块、手势联动模块、转盘停止转动模块、转动结果计算模块和传感器;所述转盘框架上安装有转盘指针;所述转盘内容自动生成模块,用于将输入的字符自动等分成若干份,每份中显示对应的文字;所述手势联动模块,用于将手势移动和转盘转动关联,当手势移动,转盘会相应的转动;所述转盘停止转动模块,根据设定的停止转动事件的触发条件,用于控制转盘停止转动;所述转动结果计算模块,用于计算转盘停止后指针指向的转盘内容;所述传感器,用于检测手指的按压和移动;还包括音效播放模块,所述音效播放模块,用于在转动中播放音效。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。