GJK计算碰撞代码的应用//-----------------------------------------------------------------------------//Torque3D//Copyright(C)GarageGames.com,Inc.////Thecorealgorithmsinthisfilearebasedoncodewritten//byG.vandenBergenforhisinterferencedetectionlibrary,//"SOLID2.0"//-----------------------------------------------------------------------------#include"core/dataChunker.h"#include"collision/collision.h"#include"sceneGraph/sceneObject.h"#include"collision/convex.h"#include"collision/gjk.h"//----------------------------------------------------------------------------staticF32rel_error=1E-5f;//relativeerrorinthecomputeddistancestaticF32sTolerance=1E-3f;//DistancetolerancestaticF32sEpsilon2=1E-20f;//ZerolengthvectorstaticU32sIteration=15;//Stuckinaloop?S32num_iterations=0;S32num_irregularities=0;//----------------------------------------------------------------------------GjkCollisionState::GjkCollisionState(){a=b=0;}GjkCollisionState::~GjkCollisionState(){}//----------------------------------------------------------------------------voidGjkCollisionState::swap(){Convex*t=a;a=b;b=t;CollisionStateList*l=mLista;mLista=mListb;mListb=l;v.neg();}//----------------------------------------------------------------------------voidGjkCollisionState::compute_det(){//Dotnewpointwithcurrentsetfor(inti=0,bit=1;i0)returnfalse;}}returntrue;}//----------------------------------------------------------------------------inlineboolGjkCollisionState::closest(VectorF&v){compute_det();for(ints=bits;s;--s){if((s&bits)==s){if(valid(s|last_bit)){ bits=s|last_bit;if(bits!=15) compute_vector(bits,v); returntrue;}}}if(valid(last_bit)){bits=last_bit;v=y[last];returntrue;}returnfalse;}//----------------------------------------------------------------------------inlineboolGjkCollisionState::degenerate(constVectorF&w){for(inti=0,bit=1;imState=this;mListb=CollisionStateList::alloc();mListb->mState=this;}//----------------------------------------------------------------------------voidGjkCollisionState::reset(constMatrixF&a2w,constMatrixF&b2w){VectorFzero(0,0,0),sa,sb;a2w.mulP(a->support(zero),&sa);b2w.mulP(b->support(zero),&sb);v=sa-sb;dist=v.len();}//----------------------------------------------------------------------------voidGjkCollisionState::getCollisionInfo(constMatrixF&mat,Collision*info){AssertFatal(false,"GjkCollisionState::getCollisionInfo()-Thereremainscalingproblemshere.");//ThisassumesthattheshapesdonotintersectPoint3Fpa,pb;if(bits){getClosestPoints(pa,pb);mat.mulP(pa,&info->point);b->getTransform().mulP(pb,&pa);info->normal=info->point-pa;}else{mat.mulP(p[last],&info->point);info->normal=v;}info->normal.normalize();info->object=b->getObject();}voidGjkCollisionState::getClosestPoints(Point3F&p1,Point3F&p2){F32sum=0;p1.set(0,0,0);p2.set(0,0,0);for(inti=0,bit=1;isupport(va);a2w.mulP(p[last],&sa);VectorFvb,sb;w2b.mulV(v,&vb);q[last]=b->support(vb);b2w.mulP(q[last],&sb);VectorFw=sa-sb;if(mDot(v,w)>0)returnfalse;if(degenerate(w)){++num_irregularities;returnfalse;}y[last]=w;all_bits=bits|last_bit;++num_iterations;if(!closest(v)||num_iterations>sIteration){++num_irregularities;returnfalse;}}while(bitssEpsilon2);returntrue;}F32GjkCollisionState::distance(constMatrixF&a2w,constMatrixF&b2w,constF32dontCareDist,constMatrixF*_w2a,constMatrixF*_w2b){num_iterations=0;MatrixFw2a,w2b;if(_w2a==NULL||_w2b==NULL){w2a=a2w;w2b=b2w;w2a.inverse();w2b.inverse();}else{w2a=*_w2a;w2b=*_w2b;}reset(a2w,b2w);bits=0;all_bits=0;F32mu=0;do{nextBit();VectorFva,sa;w2a.mulV(-v,&va);p[last]=a->support(va);a2w.mulP(p[last],&sa);VectorFvb,sb;w2b.mulV(v,&vb);q[last]=b->support(vb);b2w.mulP(q[last],&sb);VectorFw=sa-sb;F32nm=mDot(v,w)/dist;if(nm>mu)mu=nm;if(mu>dontCareDist)returnmu;if(mFabs(dist-mu)sIteration){++num_irregularities;returndist;}y[last]=w;all_bits=bits|last_bit;if(!closest(v)){++num_irregularities;returndist;}dist=v.len();}while(bitssTolerance);if(bits==15&&mu<=0)dist=0;returndist;}
2024/11/12 17:21:22 50KB GJK 碰撞
1
电路模拟logisim进行mips单周期CPU开发,支持的指令集MIPS-Lite:addu,subu,ori,lw,sw,beq,lui,j,sb
2024/10/18 9:01:13 181KB logisim mips
1
黑莓总是会出现这样的问题,wifi连上了但是还是上不了网,就是因为缺少了一个sb
2024/10/2 16:17:20 2KB wifi问题
1
现在我们回到LDA的原理上,我们在第一节说讲到了LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,但是这只是一个感官的度量。
现在我们首先从比较简单的二类LDA入手,严谨的分析LDA的原理。
    假设我们的数据集D={(x1,y1),(x2,y2),...,((xm,ym))}D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xixi为n维向量,yi∈{0,1}yi∈{0,1}。
我们定义Nj(j=0,1)Nj(j=0,1)为第j类样本的个数,Xj(j=0,1)Xj(j=0,1)为第j类样本的集合,而μj(j=0,1)μj(j=0,1)为第j类样本的均值向量,定义Σj(j=0,1)Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
    μjμj的表达式为:μj=1Nj∑x∈Xjx(j=0,1)μj=1Nj∑x∈Xjx(j=0,1)    ΣjΣj的表达式为:Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1)Σj=∑x∈Xj(x−μj)(x−μj)T(j=0,1)    由于是两类数据,因此我们只需要将数据投影到一条直线上即可。
假设我们的投影直线是向量ww,则对任意一个样本本xixi,它在直线ww的投影为wTxiwTxi,对于我们的两个类别的中心点μ0,μ1μ0,μ1,在在直线ww的投影为wTμ0wTμ0和wTμ1wTμ1。
由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化||wTμ0−wTμ1||22||wTμ0−wTμ1||22,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差wTΣ0wwTΣ0w和wTΣ1wwTΣ1w尽可能的小,即最小化wTΣ0w+wTΣ1wwTΣ0w+wTΣ1w。
综上所述,我们的优化目标为:argmaxwJ(w)=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)wargmax⏟wJ(w)=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w    我们一般定义类内散度矩阵SwSw为:Sw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)TSw=Σ0+Σ1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)T    同时定义类间散度矩阵SbSb为:Sb=(μ0−μ1)(μ0−μ1)TSb=(μ0−μ1)(μ0−μ1)T    这样我们的优化目标重写为:argmaxwJ(w)=wTSbwwTSwwargmax⏟wJ(w)=wTSbwwTSww    仔细一看上式,这不就是我们的广义瑞利商嘛!这就简单了,利用我们第二节讲到的广义瑞利商的性质,我们知道我们的J(w)J(w)最大值为矩阵S−12wSbS−12wSw−12SbSw−12的最大特征值,而对应的ww为S−12wSbS−12wSw−12SbSw−12的最大特征值对应的特征向量!而S−1wSbSw−1Sb的特征值和S−12wSbS−12wSw−12SbSw−12的特征值相同,S−1wSbSw−1Sb的特征向量w′w′和S−12wSbS−12wSw−12SbSw−12的特征向量ww满足w′=S−12www′=Sw−12w的关系!    注意到对于二类的时候,SbwSbw的方向恒为μ0−μ1μ0−μ1,不妨令Sbw=λ(μ0−μ1)Sbw=λ(μ0−μ1),将其带入:(S−1wSb)w=λw(Sw−1Sb)w=λw,可以得到w=S−1w(μ0−μ1)w=Sw−1(μ0−μ1),也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向ww了。
2024/7/30 21:57:26 3KB MATLAB 人脸识别 LDA knn
1
不知道现在还有多少的人收藏着黑莓7290手机,我现在手里有一部,但是只能成为戒网机了,只能打电话和收发短信了,没有SB,手机的网络也没有办法激活,虽然7290不需要SB,但是那是在有浏览器的情况下,现在都么有浏览器了,就别说上网了!!
2024/7/11 22:27:45 40.53MB
1
黑莓手机SB文件,可以用来分析各种sb对开发和上网的影响;
(要用黑莓本地的浏览器的话必须导入servicebook,这个需要DM桌面管理器恢复导入手机里)
2024/3/11 20:12:16 3KB 黑莓 service book
1
android源码,斗地主游戏;
看到很多sb上传资源,要很多分数。
现在分享给大家,没办法0分,所以1分供下载。
eclipse工程,用as得需要手动整理一下
2024/2/28 11:50:34 25.69MB android
1
如题很好用的SB浏览器可激活,能上网,完美支持9600系列的黑莓机
2024/2/6 3:32:22 4KB sb
1
基于HttpHelper万能框架V2.2源码基础上,修复了cookie合并的问题,以及ssl基础连接已关闭的问题。
作者你为什么要举报我?1,cookie修复internalstaticstringGetMergeCookie(stringoldCookie,stringnewCookie){if(!string.IsNullOrEmpty(oldCookie)&&!string.IsNullOrEmpty(newCookie)){if(oldCookie==newCookie)returnoldCookie;else{ListOld=newList(oldCookie.Split(';'));ListNew=newList(newCookie.Split(';'));foreach(stringninNew){foreach(stringoinOld){if(o==n||o.Split('=')[0]==n.Split('=')[0]){Old.Remove(o);break;}}}Listlist=newList(Old);list.AddRange(New);StringBuildersb=newStringBuilder();foreach(varsinlist){if(s!=""){sb.Append(s).Append(";");}}returnsb.ToString();}}elseif(!string.IsNullOrEmpty(oldCookie)){returnoldCookie;}elseif(!string.IsNullOrEmpty(newCookie)){returnnewCookie;}else{return"";}}2,ssl修复ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls|SecurityProtocolType.Ssl3|(SecurityProtocolType)3072|(SecurityProtocolType)192|(SecurityProtocolType)768;
2024/1/27 13:20:42 345KB HttpHe
1
本人使用9930将近50天,手机刚买来是OS7.1.0.163的rom,感觉掉电严重太快,基本是半天就要充电,所以我都是随身携带充电器,看到插座就往上插,之后天天晚上看看论坛,发现有很多人说刷新版rom可以解决用电问题,我就开始找帖子看,看了三四个晚上,发现论坛写9930刷机的帖子少,而且不完整,不仔细,太过简洁,不适合新手,我这个帖子就是专门一步一步的教新手刷机,如果看完我的帖子还是不会刷,那么我觉得你已经笨到一定境界了。
老鸟可以无视我的帖子。
详细刷机过程,回复可见,我只是觉得自己写的很认真,希望能给大家带来帮助。
不想帖子被埋没。
才设置回复可见。

【【【一】】】下面我来说一下刷机步骤:一。
安装桌面管理器(安装位置就选择默认吧,如果有的朋友安装完忘记自己安装在哪了,可以右击桌面上的“BlackBerryDesktopSoftware”查看属性就能看到具体位置)“黑莓桌面管理器DesktopManagerv7.1.0.31”下载地址《http://115.com/file/e71pa3eg#710-b032-multilanguage.exe》“黑莓桌面管理器6.0多国语言版”下载地址《http://download.pchome.net/home/mobile/general/detail-173650.html》随便装哪个,看个人喜好,无所谓的事。
二。
安装好桌面管理器了,就把手机连电脑,选择“usb驱动模式”,打开桌面管理器,备份《如果自己感觉手机里没啥重要的就别备份了》,备份完毕后可以把手机与数据线拔开三。
安装你下载好的rom,这里我推荐两个9930的rom。
一,“OS7.1.0.267泄露版”(优点:是9930最省电的rom。
缺点:1,信号不好2,触摸屏幕灵敏度不好3,没中文输入法《这些都是我把论坛用过267rom的意见总结起来,并不是我亲自测试的,朋友们别喷我,自己可以刷了试试,》)rom下载地址《http://115.com/file/belipcwq》二,“OS7.1.0.402全语言测试版”(挂着qq,偶尔聊聊天,五六条短信,三个小时掉15%的电量,百分之百有中文输入和中文显示。
由于刚刚刷,所以只测试了电量消耗情况。
原本用的163的rom掉电速度绝对是402的两三倍。
!!本人亲测!!!!)rom下载地址《http://115.com/file/dpna754d》四。
进去我的电脑"C:\ProgramFiles\CommonFiles\ResearchInMotion\AppLoader”目录,找到Vendor.xml文件,将其删除。
五。
安装“BerryBox”下载地址《http://www.cr173.com/soft/27672.html》等“BerryBox”安装好了,再次将手机与电脑连接,打开“BerryBox”,左击“刷新设备”,然后左击“连接设备”,然后左击“系统工具”,找到“WIPE手机”那一栏,在“-a和-f”前面勾上,然后左击“WIPE”。
然后手机会显示507,然后把手机与数据线拔开,然在在插上《具体为什么拔开插上我也不知道,跟人家学的,您也可以选择不拔开》  六。
打开我的电脑"C:\ProgramFiles\CommonFiles\ResearchInMotion\AppLoader”目录,找到“Loader”《图标看起来跟一个手机差不多》,双击它!  按照个人要求进行选择安装,语言那一块,上面只有英语法语等等。

别急。

往下拉。

中午输入中文显示在几乎最下面,仔细看。
设置好点“确定” 七。
等到电脑上显示完成了,就可以拔开数据线。
等待手机启动《手机启动时间非常漫长,别急》。
手机开机了都是英语,别怕,自己到设置语言的地方去跟换!别告诉我不知道在哪设置!!那刷机前记记清楚!!!八。
刷机完毕,连接桌面管理器,导入sb,这个别忘了!然后就OK了。




【【【二】】】关于黑莓9930有争议的几点《写号的朋友别看了》:1.谷
2023/12/25 14:58:02 19KB 经验
1
共 24 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡