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
内含Digital_baseband_array.mDigital_baseband_awgn.mDigital_baseband_ber.mDigital_baseband_eye_pattern.mDigital_baseband_filterR.mDigital_baseband_filterT.mDigital_baseband_judgement.mDigital_baseband_noise.mDigital_baseband_noise_va.mDigital_baseband_sample.mDigital_baseband_send_signal.mshyx.msqrt_shyx.mdtft2.midft.m等子程序或函数
2024/11/11 12:02:02 7KB matlab
1
VisualAssistx10.9.2333crack破解和谐补丁vs2019亲测可用1.如果使用过其它版本的visualasssitx,请先卸载2.安装VA_X_Setup2324_0.exe3.复制va_x.dll到插件目录
2024/9/10 11:44:01 41.01MB va_x 10.9.2333 visual assist
1
va_x_setup2074,支持vs2010-2015版本,说明参见:https://blog.csdn.net/freeking101/article/details/54631640
2024/8/24 15:05:28 24.96MB vs番茄助手
1
VC6.0非常好的插件,含注册码,能方码的加色语法,与定位函数等其它许多功能,非常好的助手
2024/8/16 18:37:09 2.9MB VA(破解版).rar
1
亲测可同时支持VC6VS2010VS2012VS2013VS2015,win764bit可用.
2024/6/3 21:32:47 24.92MB VC助手 visual assist 番茄助手
1
VA_X_Setup2073加破解补丁支持VS2015正式版
2024/1/28 16:19:53 20.61MB VA_X_
1
与网络上流传的VisualAssist破解版不同,这是我自己使用的10.9.2218的汉化破解完美版,本版本同样基于飘云阁破解补丁2.0实现。
具体安装方法如下:1.安装VA_X_Setup2118(确保是全新安装,之前没有安装过。
如果安装过请务必清理干净并不要使用网络上的VA_X.dll破解补丁!)2.运行visualassistx通用破解补丁v2.0后,点击安装按钮3.将VAOpsWin.dll拷贝到C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\.0%\Extensions\%randomdir%下覆盖原文件实现vax的汉化..0%请根据自己的版本来确定,%randomdir%是visualassistX所在的随机文件夹。
4.启动VisualStudio后,将会弹出飘云阁的提示,注册信息已经在粘贴板中,进入VisualStudio环境后会自动弹出输入key窗口。
如果没有,执行VASSSIT|Options点击enterkey按钮,将下面的信息复制到key窗口后,单击确定按钮,会提示:Thanksforyourpurchasing!PYG解密小组(254-userlicense)Supportends2099.12.3100001M-70NDZJ-7RRVVH-7RH4HU-37427D-3TBFTR-TAPC8P-QQM4FR-6P4Y8V-7RK7YC-YFGK8M5.执行工具|导入导出设置命令导入“VisualAssistX菜单栏”实现VASSISTX的菜单栏汉化6.ENJOY!
2023/10/11 19:05:39 25.31MB 10.9.2218 汉化破解 完美版
1
文件列表:LordPE.EXE.............增强版(英文版)LordPE_hh.EXE.............增强版(cao_cong汉化版)\原版\LordPE.EXE.............原版LordPlug.dll.............kanxue制作的功能插件LordPeFix.dll.............SnowFox修正(原来是freecat制作的功能插件,修正LordPE只显示60个进程的bug)更新历史:2008.5.31资源名溢出漏洞。
缓冲区长度检测是char,但是拷贝的时候是wchar,所以溢出了。
标题:测试你的LordPE作者:somuch时间:2008-05-16,16:28链接:http://bbs.pediy.com/showthread.php?t=649352007.9.9SnowFox主页提供的LordPE增加版中所带Lordpefix.dll发现并不能解除60进程限制,原来是其中的偏移地址与所带LordPE主程序不匹配修改了偏移地址后,可以用了2006.11.30freecat制作的功能插件LordPeFix.dll,修正LordPE只显示60个进程的bug2005.10.15(1)为LordPE查看输入表部分加上搜索功能(2)为LordPE查看输入表部分加右键菜单(仅复制ThunkRVA/FirstThunk列).(3)当点击LordPE查看输入表部分中"ViewalwaysFirstThunk",保持光条在原来位置.(LordPE默认会将光条置到0行)(4)修改FLC(FileLocationCalulator)窗口中各个文本框(VA,RVA,Offset)为只读属性,此时可以用鼠标复制里面的文本.(LordPE原来是将文本框禁止变灰,此时不可复制)
2023/9/12 10:39:37 356KB LordPE汉化增强版
1
如果好用,记得来评价。
1.如果以前安装过,先打开VS卸载原有的VA,并所有的VS2.点击VA_X_Setup2333_0.exe安装程序,选择你要安装的VS版本。
3.打开Everything,在搜索栏中输入VA_X.dll查找。
如果安装过,你会看到会搜到一个列表4.将解压的VA_X.dll拷贝并替换掉所有C盘下的VA_X.dll5.完成
2023/8/12 9:24:16 42.51MB 番茄插件 VA VisualAssist
1
共 23 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡