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
NULL博文链接:https://mingzijian.iteye.com/blog/1996817
2024/11/10 5:08:01 987KB 源码 工具
1
图像的增强/////////////////////////////////直方图对话框构造函数;
ZFT::ZFT(CWnd*pParent/*=NULL*/):CDialog(ZFT::IDD,pParent)//ZFT为定义的用来显示直方图的对话框类;
{ Width=Height=0;//对话框初始化阶段设置图像的宽和高为"0";
}////////////////////////对话框重画函数;
voidZFT::OnPaint(){ CRectrect;//矩形区域对象;
 CWnd*pWnd;//得到图片框的窗口指针;
 pWnd=GetDlgItem(IDC_Graphic);//得到ZFT对话框内的"Frame"控件的指针;
 file://(IDC_Graphic为放置在对话框上的一个"Picture"控件,并讲类型设置为"Frame")。
 pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"视"区域;
 inti; CPaintDCdc(pWnd);//得到"Frame"控件的设备上下文;
 file://画直方图的x、y轴;
 dc.MoveTo(0,rect.Height()); dc.LineTo(rect.Width(),rect.Height()); dc.MoveTo(0,rect.Height()); dc.LineTo(0,0); file://画直方图,num[]是"ZFT"的内部数组变量,存放的是图像各个灰度级出现的概率;
该数组的各个分量在  显示具体图像的直方图时设置;
 for(i=0;iGetWindowRect(&rect);//获取pWnd窗口对象窗口区域位置;
 file://屏幕坐标转换为客户区坐标;
 ScreenToClient(&rect); file://判断当前鼠标是否指在直方图内;
 if(rect.PtInRect(point)) {  intx=point1.x-rect.left;  file://当前鼠标位置减去区域的起始位置恰好为当前鼠标所指位置所表示的灰度级;
  string.Format("%d",x);  file://显示当前位置对应的图像的灰度级;
  pWndText->SetWindowText((LPCTSTR)string); } CDialog::OnMouseMove(nFlags,point);}////////////////////////////////////////voidCDibView::OnImagehorgm()file://在程序的"视"类对象内处理显示图像直方图的函数;
{ CDibDoc*pDoc=GetDocument(); HDIBhdib; hdib=pDoc->GetHDIB(); BITMAPINFOHEADER*lpDIBHdr;//位图信息头结构指针;
 BYTE*lpDIBBits;//指向位图像素灰度值的指针;
 lpDIBHdr=(BITMAPINFOHEADER*)GlobalLock(hdib);//得到图像的位图头信息 lpDIBB
2024/11/9 9:49:33 134KB 图像增强
1
NULL博文链接:https://wondery.iteye.com/blog/435512
2024/11/5 15:41:52 20KB 源码 工具
1
行政区划-省市区邮编区号拼音经纬度-全面标准数据库数据信息同步于2019-02-20,通过地图服务同步。
数据表脚本:CREATETABLE[dbo].[Areas]([ID]INTNULL,--区划ID[ParentId]INTNULL,--父ID[LevelType]INTNULL,--级别[Name][nvarchar](500)NULL,--全称[ShortName][nvarchar](500)NULL,--简称[ParentPath][nvarchar](500)NULL,--ID路径(110000,110100,110105)[Province][nvarchar](500)NULL,--省份全称[City][nvarchar](500)NULL,--城市全称[District][nvarchar](500)NULL,--县区全称[ProvinceShortName][nvarchar](500)NULL,--省份简称[CityShortName][nvarchar](500)NULL,--城市简称[DistrictShortName][nvarchar](500)NULL,--县区简称[ProvincePinyin][nvarchar](500)NULL,--省份拼音[CityPinyin][nvarchar](500)NULL,--城市拼音[DistrictPinyin][nvarchar](500)NULL,--县区拼音[Pinyin][nvarchar](500)NULL,--拼音[Jianpin][nvarchar](500)NULL,--简拼[FirstChar][nvarchar](500)NULL,--首拼[CityCode][nvarchar](500)NULL,--区号[ZipCode][nvarchar](500)NULL,--邮编[Lng][nvarchar](500)NULL,--经度[Lat][nvarchar](500)NULL,--纬度[Remark1][nvarchar](500)NULL,--是否行政区[Remark2][nvarchar](500)NULL,--类型(县级市|地级市|经济开发区|高新区|新区))ON[PRIMARY]GO
1
NULL博文链接:https://ligaosong.iteye.com/blog/1750085
2024/11/1 12:10:15 101KB 源码 工具
1
简单的飞机大战游戏importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.event.MouseEvent;importjava.awt.event.MouseMotionListener;importjava.util.ArrayList;importjava.util.Random;importjavax.swing.ImageIcon;importjavax.swing.JPanel;publicclassMyJPanelextendsJPanelimplementsRunnable,MouseMotionListener{ Yingxiongjiyingxiong=newYingxiongji(); ArrayListzidans=newArrayList(); booleanisFire=false;//是否冒泡(发射) booleanpass=false; ArrayListdijis=newArrayList();//保存所有的敌机 intdicount=15; ImageyingxiongImg=null; ImagezidanImg=null; ImagedijiImgs[]=newImage[15]; ImagebeijingImg=null; intbeijingY=-720; Randomran=newRandom();
10.25MB Game
1
commons-lang3.3.1.jar、ApacheCommons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。
必须使用的jar包。
为JRE5.0+的更好的版本所提供Jar文件包含的类:META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.classorg.apache.commons.lang.BitField.classorg.apache.commons.lang.BooleanUtils.classorg.apache.commons.lang.CharEncoding.classorg.apache.commons.lang.CharRange.classorg.apache.commons.lang.CharSet.classorg.apache.commons.lang.CharSetUtils.classorg.apache.commons.lang.CharUtils.classorg.apache.commons.lang.ClassUtils.classorg.apache.commons.lang.Entities$ArrayEntityMap.classorg.apache.commons.lang.Entities$BinaryEntityMap.classorg.apache.commons.lang.Entities$EntityMap.classorg.apache.commons.lang.Entities$HashEntityMap.classorg.apache.commons.lang.Entities$LookupEntityMap.classorg.apache.commons.lang.Entities$MapIntMap.classorg.apache.commons.lang.Entities$PrimitiveEntityMap.classorg.apache.commons.lang.Entities$TreeEntityMap.classorg.apache.commons.lang.Entities.classorg.apache.commons.lang.IllegalClassException.classorg.apache.commons.lang.IncompleteArgumentException.classorg.apache.commons.lang.IntHashMap$Entry.classorg.apache.commons.lang.IntHashMap.classorg.apache.commons.lang.LocaleUtils.classorg.apache.commons.lang.NotImplementedException.classorg.apache.commons.lang.NullArgumentException.classorg.apache.commons.lang.NumberRange.classorg.apache.commons.lang.NumberUtils.classorg.apache.commons.lang.ObjectUtils$Null.classorg.apache.commons.lang.ObjectUtils.classorg.apache.commons.lang.RandomStringUtils.classorg.apache.commons.lang.SerializationException.classorg.apache.commons.lang.SerializationUtils.classorg.apache.commons.lang.StringEscapeUtils.classorg.apache.commons.lang.StringUtils.classorg.apache.commons.lang.SystemUtils.classorg.apache.commons.lang.UnhandledException.classorg.apache.commons.lang.Validate.classorg.apache.commons.lang.WordUtils.classorg.apache.commons.lang.builder.CompareToBuilder.classorg.apache.commons.lang.builder.EqualsBuilder.classorg.apache.commons.lang.builder.HashCodeBuilder.classorg.apache.commons.lang.builder.ReflectionToStringBuilder$1.classorg.apache.commons.lang.builder.ReflectionToStringBuilder.classorg.apache.commons.lang.builder.StandardToStringStyle.classorg.apache.commons.lang.builder.ToStringBuilder.classorg.apache.commons.lang.builder.ToStringStyle$DefaultToStringStyle.classorg.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.classorg.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.classorg.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.classorg.apache.commons.lang.builder.ToStringStyle$SimpleToStringStyle.classorg.apache.commons.lang.builder.ToStringStyle.classorg.apache.commons.lang.enum.Enum$Entry.classorg.apache.commons.lang.enum.Enum.classorg.apache.commons.lang.enum.EnumUtils.classorg.apache.commons.lang.enum.ValuedEnum.classorg.apache.commons.lang.enums.Enum$Entry.classorg.apache.commons.lang.enums.Enum.classorg.apache.commons.lang.enums.EnumUtils.classorg.apache.commons.lang.enums.ValuedEnum.classorg.apache.commons.lang.exception.ExceptionUtils.classorg.apache.commons.lang.exception.Nestable.classorg.apache.commons.lang.exception.NestableDelegate.classorg.apache.commons.lang.exception.NestableError.classorg.apache.commons.lang.exception.NestableException.classorg.apache.commons.lang.exception.NestableRuntimeException.classorg.apache.commons.lang.math.DoubleRange.classorg.apache.commons.lang.math.FloatRange.classorg.apache.commons.lang.math.Fraction.classorg.apache.commons.lang.math.IntRange.classorg.apache.commons.lang.math.JVMRandom.classorg.apache.commons.lang.math.LongRange.classorg.apache.commons.lang.math.NumberRange.classorg.apache.commons.lang.math.NumberUtils.classorg.apache.commons.lang.math.RandomUtils.classorg.apache.commons.lang.math.Range.classorg.apache.commons.lang.mutable.Mutable.classorg.apache.commons.lang.mutable.MutableBoolean.classorg.apache.commons.lang.mutable.MutableByte.classorg.apache.commons.lang.mutable.MutableDouble.classorg.apache.commons.lang.mutable.MutableFloat.classorg.apache.commons.lang.mutable.MutableInt.classorg.apache.commons.lang.mutable.MutableLong.classorg.apache.commons.lang.mutable.MutableObject.classorg.apache.commons.lang.mutable.MutableShort.classorg.apache.commons.lang.text.CompositeFormat.classorg.apache.commons.lang.text.StrBuilder$StrBuilderReader.classorg.apache.commons.lang.text.StrBuilder$StrBuilderTokenizer.classorg.apache.commons.lang.text.StrBuilder$StrBuilderWriter.classorg.apache.commons.lang.text.StrBuilder.classorg.apache.commons.lang.text.StrLookup$MapStrLookup.classorg.apache.commons.lang.text.StrLookup.classorg.apache.commons.lang.text.StrMatcher$CharMatcher.classorg.apache.commons.lang.text.StrMatcher$CharSetMatcher.classorg.apache.commons.lang.text.StrMatcher$NoMatcher.classorg.apache.commons.lang.text.StrMatcher$StringMatcher.classorg.apache.commons.lang.text.StrMatcher$TrimMatcher.classorg.apache.commons.lang.text.StrMatcher.classorg.apache.commons.lang.text.StrSubstitutor.classorg.apache.commons.lang.text.StrTokenizer.classorg.apache.commons.lang.time.DateFormatUtils.classorg.apache.commons.lang.time.DateUtils$DateIterator.classorg.apache.commons.lang.time.DateUtils.classorg.apache.commons.lang.time.DurationFormatUtils$Token.classorg.apache.commons.lang.time.DurationFormatUtils.classorg.apache.commons.lang.time.FastDateFormat$CharacterLiteral.classorg.apache.commons.lang.time.FastDateFormat$NumberRule.classorg.apache.commons.lang.time.FastDateFormat$PaddedNumberField.classorg.apache.commons.lang.time.FastDateFormat$Pair.classorg.apache.commons.lang.time.FastDateFormat$Rule.classorg.apache.commons.lang.time.FastDateFormat$StringLiteral.classorg.apache.commons.lang.time.FastDateFormat$TextField.classorg.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey.classorg.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule.classorg.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule.classorg.apache.commons.lang.time.FastDateFormat$TwelveHourField.classorg.apache.commons.lang.time.FastDateFormat$TwentyFourHourField.classorg.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField.classorg.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField.classorg.apache.commons.lang.time.FastDateFormat$TwoDigitYearField.classorg.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField.classorg.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField.classorg.apache.commons.lang.time.FastDateFormat.classorg.apache.commons.lang.time.StopWatch.class
2024/10/25 8:46:49 287KB commons.lang
1
NULL博文链接:https://longleg.iteye.com/blog/341873
2024/10/20 13:02:42 77KB 源码 工具
1
毕业论文,java,网上购物商城Vectorshop=(Vector)session.getAttribute("shop");if(shop==null){shop=newVector();}else{for(inti=0;i<shop.size();i++){BuyListlist=(BuyList)shop.elementAt(i);if(list.warename.equals(mylist.warename)){list.number++;shop.setElementAt(list,i);listFlag=false;if(listFlag)shop.addElement(mylist)
2024/10/17 16:50:08 2.93MB 毕业论文
1
共 264 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡