cocos2dx 旋转动画3.0 有没有提供 两个 有旋转角度 的矩形碰撞检测

拒绝访问 | www.th7.cn | 百度云加速
请打开cookies.
此网站 (www.th7.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3eca55fd118943cb-ua98).
重新安装浏览器,或使用别的浏览器47被浏览1,383分享邀请回答geometrictools.com/GTEngine/Include/Mathematics/GteIntrEllipse2Ellipse2.h。[1] Eberly, David. "Intersection of ellipses." Geometric Tools 200 (2000): . 133 条评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答如何对两个有旋转角度的椭圆进行碰撞检测_百度知道
如何对两个有旋转角度的椭圆进行碰撞检测
我有更好的答案
circle(C)根据命令行提示相应操作(注意Ctrl+右键调出捕捉快捷菜单的操作)小提示,要重新定义输入P)参照中通过选择两点指定方向时应注意选择顺序不同导致参照角度的不同(从左到右和从右到左选择的区别)11 视图重生成命令:是否删除源对象选项(默认否(N))8 修剪命令,无理论证明)d 如何绘制圆上具有一定角度的直线:图形样板文件,用于自定义样板19 :rectang(REC)A 指定另一个角点:0:A 从左上向右下:窗围B 从右下向左上:参照中首先选择“参照角”为需修改图形的原有角度(通过指定两点操作)之后通过指定两点指定需要参照的角度(默认第一点为旋转的指定点;2008学习总结常用基本操作1 常用工具栏的打开和关闭:先指定矩形面积,Y,再偏移半径值3,并需要移动鼠标指定矩形所在的象限C 面积(A):X;不延伸(N)])b express插件的使用,命令提示行输入extrim命令(增强修剪),剪切所选边一侧所有相交图形9 延伸命令:extend(EX)命令与修剪中类似; a(与X轴正方向的夹角)小提示:0.5可输入:按住Shift并按住鼠标中键拖动17 :工具栏上方点击右键进行选择2 动态坐标的打开与关闭:冷夹点 B 绿色:预备编辑夹点 C红色:erase(E) 4. 复制命令:copy(CO)5. 移动命令:move(M)6,尺寸可定义的二位空间8 鼠标左键的选择操作:不将延伸边界作为剪切或延伸边界(默认值);1:相反命令10 旋转命令:rotato(RO)A 复制(C):旋转过程中同时复制对象B 参照(R). dws文件:图形标准文件,移动或比例缩放(应注意夹点中的比例缩放是多重缩放,同一图形可在选中夹点连续进行多次不同比例缩放)16 三维绘图中的旋转:可编辑夹点D 可通过右键选择夹点的编辑类型 E 选中一个夹点之后可以通过空格键依次改变夹点编辑的命令如延伸:line(L)A绝对坐标法:trim(TR)A 点选对象或直接使用空格键及右键选择所有对象为剪切边界B 选择要修剪的对象或按住Shift 键选择要延伸的对象或 [栏选 (F)&#47:直接输入点的坐标B相对坐标法:@ X,Y(其中@表示相对于上一点位置不变,在绘制同心圆时也可输入@控制圆心不变)C 角度直线(极轴法),按住Shift 键可以选择要修剪的对象小提示:edgemode命令:在左下角坐标显示栏进行点击3 对象捕捉内容的选择:A在对象捕捉按钮上右键点击(对象捕捉开关. 矩形命令:a 边(E):确定对象是在另一对象的延长边处进行修剪,还是仅在三维空间中与该对象相交的对象处进行修剪([延伸(E)&#47:A 常规查看:鼠标移于工具栏相应按钮上查看状态栏显示B 命令别名(缩写)的查看;窗交(C)/投影(P)&#47:F3)B 在极轴选择上可以更改极轴角度和极轴模式(绝对还是相对上一段线)4 工具栏位置的变化:A锁定:右下角小锁;工具栏右键B 锁定情况下的移动:Ctrl +鼠标移动5 清楚屏幕(工具栏消失):Ctrl + 06 隐藏命令行:Ctrl + 97 模型空间和布局空间的定义:先在圆心绘制相同角度的直线,可以选择相切相切之后在直线上选择垂足命令绘制(经验:用于指定需绘制三维长方体高度e 宽度(W);边(E)/删除(R)/放弃(U)](此处可参考帮助F1)小提示:第一点:A wmfout(矢量图) B jpgout/bmpout(位图)应先选择输出范围15 夹点的使用:regen(RE)绘图中无法进一步缩小或三维绘图中要重新显示隐藏线时可以使用上述命令小提示:whiparc命令:1:每次实时平移,实时缩放都会自动重生成;0:相反命令12 圆弧命令:arcA 起点,端点,半径画弧:a 默认起点到终点逆时针成弧(应注意起点和终点的选择顺序)b 半径值的正负,输入正值所绘为劣弧,输入负值为优弧B 圆弧绘制一共有十种命令,从菜单栏直接选择调用相应简单13 正多边形命令:polgon(POL)A 正多边形默认可选择变数为3~以上默认为圆B 边(E):通过指定一条边的长度绘制正多边形C 多边形绘制中默认边与x轴平行,要进行改变使多边形尖角向上,输入圆半径时应为@0,外接圆或内切圆半径值14 阵列命令:array(AR)A 矩形行(列)偏移值:相同两点之间的距离,可以从图中选取B 角度值也可从图中选取,通过选取两点指定C 环形阵列使用中应该注意中心点的选择,同时应注意构造环形阵列而且不旋转对象时,要避免意外结果,最好手动设置基点(详细菜单)D 环形阵列使用中项目间角度的拾取应在中心点拾取之后(默认以中心点为拾取角度的顶点)E 环形阵列中填充角度的选择默认为与X轴的夹角,如果要选择的填充角度不从X轴开始,可一先改变UCS,再进行选择。15 构造线命令:xline(XL)A 垂直(V)或水平(H):绘制垂直或水平的构造线B 角度(A):绘制与x轴正向呈一定夹角的构造线,其中的参照(r)用于绘制与所选直线呈一定夹角的构造线C 二等分(B):用于绘制任意角度的角平分线D 偏移(O):绘制所选直线平行线,其中通过(T)可绘制所选直线通过某点的平行线E 射线可由构造线剪切得到16 射线命令:ray17 定数等分命令:divide(DIV)小提示:a 修改等分点格式:ddptype命令或点击格式→点样式b 等分角可随意绘制以角顶点为圆心的任意弧,再将此弧定数等分18 定距等分:mesure(ME)定距等分剩余部分的位置取决于鼠标选取的方向19 修订云线命令:revcloud对象(O):用于将所选图形转化为修订云线20 徒手划线命令:sketch21 多段线命令:pline(PL)A 默认绘制为直线,所绘图形为一个整体B 圆弧(A):用于绘制圆弧线段a 角度(A):指定所绘圆弧的圆心角大小,随之通过指定圆弧端点或指定圆心(CE)或半径(R)来绘制圆弧b 圆心(CE):通过指定圆弧圆心,随后指定角度(A)或长度(弦长)(L)来绘制圆弧c 闭合(CL):圆弧绘制中生成圆,但其本质是多段线(Ctrl+1特性查看;夹点不同)d 方向(D):用于指点圆弧的起始切线方向,随后再指定另一端点绘制圆弧e 半宽(H)与宽度(W):指定所绘圆弧的线宽(可用于绘制箭头)f 直线(L):退出圆弧绘制,回到直线绘制g 第二点(S):通过指点圆弧上一点,之后指定端点三点画圆弧h 半径(R):指定圆弧的半径值,随后指定端点或角度(A)绘制圆弧C 长度(L):在上次直线方向上延伸一定长度D 此命令只用于绘制二维多段线,绘制三维多段线使用3DPOLY(3P)22 样条曲线命令:spline(SPL)A 结束绘制时应先后指定起点和端点的切线方向(按Enter之后指定)B 拟合公差(F):如果公差设置为 0,则样条曲线通过拟合点。输入大于 0 的公差将使样条曲线在指定的公差范围内通过拟合点(更改所有控制点的公差)。C 对象(O):将二维或三维的二次或三次样条拟合多段线转换成等价的样条曲线并删除多段线(样条曲线拟合多段线命令在Pedit(PE)中)23 多段线编辑命令:pedit(PE)A 如果选定对象是直线或圆弧,则显示以下提示:是否将其转换为多段线B 如果选择是多段线,将有以下选择:a 闭合(C):创建多段线的闭合线,将首尾连接b 打开(O):删除多段线的闭合线段c 合并(J):在开放的多段线的尾端点添加直线、圆弧或多段线和从曲线拟合多段线中删除曲线拟合。对于要合并多段线的对象,除非第一个 PEDIT 提示下使用“多个”选项,否则,它们的端点必须重合。在这种情况下,如果模糊距离设置得足以包括端点,则可以将不相接的多段线合并。可以通过选择合并类型控制合并,还可以设定模糊距离限制仅将端点距离大于此值的多段线进行合并。d 宽度(W):为整个多段线指定新的宽度e 编辑顶点(E):其中涉及顶点的标记,详细见帮助文档f 拟合(F):创建圆弧拟合多段线(由圆弧连接每对顶点的平滑曲线)。曲线经过多段线的所有顶点并使用任何指定的切线方向g样条曲线(S):使用选定多段线的顶点作为近似 B 样条曲线的曲线控制点或控制框架。该曲线(称为样条曲线拟合多段线)将通过第一个和最后一个控制点,除非原多段线是闭合的。曲线将会被拉向其他控制点但并不一定通过它们。在框架特定部分指定的控制点越多,曲线上这种拉拽的倾向就越大。h 非曲线化(D):删除由拟合曲线或样条曲线插入的多余顶点,拉直多段线的所有线段。保留指定给多段线顶点的切向信息,用于随后的曲线拟合i 线性生成(L):生成经过多段线顶点的连续图案线型。关闭此选项,将在每个顶点处以点划线开始和结束生成线型。“线型生成”不能用于带变宽线段的多段线C 上述一切命令也用于三维操作中(具体见帮助文挡)24 分解命令:explode(X)多段线进行分解将变为直线,反之直线要变为多段线使用PE命令25 偏移命令:offset(O)A 用于绘制同心圆或等距直线B 通过(T):创建通过指定点的对象C 删除(E):偏移源对象后将其删除D 图层(L):确定将偏移对象创建在当前图层上还是源对象所在的图层上E 多个(M):生成多个偏移对象26 椭圆ellipse(EL)A 长轴加短半轴画椭圆,椭圆的方向由长轴决定(初始画法)B 中心点(C):中心点加长半轴和短半轴画椭圆C 旋转(R):通过绕第一条轴旋转圆来创建椭圆(相当三维,可以指定旋转角度)D 圆弧(A):指定椭圆参数后通过指定椭圆上两点来画椭圆弧27 拉伸命令 stretch(S)注意:选择对象时,应框选要拉伸的点,否则变为移动对象而非拉伸对象,实际中一般使用夹点编辑,很少使用此命令。28 缩放命令 scale(SC)此命令基本与旋转命令中一样,此处比例因子相当于旋转中的角度操作,可参考前面论述注意,缩放中参照所选长度应在缩放区域之内,否则有可能出错29 圆角命令 fillet(F)A 半径值(R):输入倒角半径值B 修剪(T):控制圆角命令是否将选定的边修剪到圆角弧的端点(是否保留原图形)C 多段线(P):在二维多段线中两条线段相交的每个顶点处插入圆角弧(如果一条弧线段将会聚于该弧线段的两条直线段分开,则执行圆角命令 将删除该弧线段并代之以圆角弧,以较小代替较大)D 多个(M):连续多次倒圆角E 两条不相交直线形成尖角,可将倒圆角半径设为0进行倒圆角操作实现F 平行线之间倒圆角不需要输入半径值,系统直接以平行线距离为直径形成圆弧G 在圆之间和圆弧之间可以有多个圆角存在,应选择靠近期望的圆角端点的对象进行倒角H 倒圆角命令不修剪圆,故两圆之间倒圆角结果为使用圆角弧与圆平滑地相连I 三维倒角命令中,链式倒圆角,链指光滑连续相切的边J 对两个三维几何体进行倒圆角操作时,应先进行并集操作,否则圆角会出现两几何体接触部分面积减少的情况(倒圆角默认体积减少)K 执行倒圆角命令后,选择一条直线后,按住Shift再选择另一条边可以快速在两条直线之间生成角点(即生成一个角,修剪突出的直线部分)30 倒角命令 chamfer(CHA)A 距离(D):指定倒角的两个距离B 角度(A):指定一个距离,再通过指定第一条直线的夹角来生成倒角C 方式(E):控制 CHAMFER 使用两个距离还是一个距离和一个角度来创建倒角D 三维倒角中环形倒直角所选环必须在之前所选的基准面上(三维倒角必须选择必须指定要倒角边相邻的两个表面中的一个为基准表面,之后可以选择边或环(L)命令)31 边界创建 boundary(BO)A 使用由对象封闭的区域内的指定点,定义用于创建面域或多段线的对象类型、边界集和孤岛检测方法B 拾取点:根据围绕指定点构成封闭区域的现有对象来确定边界C 孤岛检测:控制 BOUNDARY 是否检测内部闭合边界,该边界称为孤岛D 对象类型:控制新边界对象的类型。BOUNDARY 将边界作为面域或多段线对象创建,在三维中面域能着色,而多段线不能32 点命令 point(PO)ddptype命令或点击格式→点样式可以修改点样式33 图案填充bhatch (H)A 常用为ANSI31填充,斜线B 添加选择对象:根据构成封闭区域的选定对象确定边界,使用“选择对象”选项时,HATCH 不自动检测内部对象的边界。必须选择选定边界内的对象,以按照当前孤岛检测样式填充这些对象。选择对象时,可以随时在绘图区域单击鼠标右键以显示快捷菜单。可以利用此快捷菜单放弃最后一个或所定对象、更改选择方式、更改孤岛检测样式或预览图案填充或渐变填充C删除边界:从边界定义中删除以前添加的任何对象D填充图案的关联性:指定填充图案是否会随着图案的大小变化而同时变化。a 取消关联性的方法:1 取消关联性勾选 2 直接在图中移动一下填充b 回复关联性的方法(使用重新创建边界选项):围绕选定的图案填充或填充对象创建多段线或面域,并使其与图案填充对象相关联(可选)E 创建独立的填充图案:控制当指定了几个单独的闭合边界时,是创建单个图案填充对象,还是创建多个图案填充对象F继承特性:使用选定图案填充对象的图案填充或填充特性对指定的边界进行图案填充或填充,可以在绘图区域中单击鼠标右键,并使用快捷菜单在“选择对象”和“拾取内部点”选项之间进行切换以创建边界G 孤岛检测a 普通:在最外层和次外层中进行填充,随后一层隔一层填充b 外部:仅在次外层和最外层之间填充c 忽略:在最外层内部全部填充H 保留边界:移动填充图案后,原图形边界仍存在I 允许的间隙:图形在不闭合下填充时所允许的间隙K 填充是二维操作,因此一直位于XOY面上,如果三维进行填充,可以先选择复制面命令(实体编辑),之后移动UCS使XOY面位于要填充表面上。34 面积查询的方法A 填充要查询的面积,选中填充图案右键特性或Ctrl+1B 列表显示list(LI),之后选择填充图案C 查询面接area(AA):需要指定加减,直接选择填充图案使用对象(O)35 标注(直接从菜单栏选择更为简单)A 选择线性和对齐标注后单击右键可直接选择对象进行标注B 坐标标注:水平为y轴坐标,垂直为x轴坐标C 折弯标注用于标注半径较大的圆或者圆弧D 角度标注点击右键可以通过指定顶点和边来标定角度E 基线标注:基线标注的第一点为基准标注的第一个尺寸(基线标注前应先有一个标注)界线的原点F 连续标注:基线标注的第一点为基准标注的第二个尺寸界线的原点(连续标注前应先有一个标注)G 选中标注,输入ED,可以直接编辑标注文字36 标注样式管理器 dimstyle(D)通过新建样式可以在同一幅图中具有不同的标注样式,命令较多可参照帮助文档37 多线 mline(ML)A 用于绘制多条平行线B 对正(J)a 上:在光标下方绘制多线,在指定点处将会出现具有最大正偏移值的直线b 无:将光标作为原点绘制多线c 下:在光标上方绘制多线,在指定点处将出现具有最大负偏移值的直线38 对齐命令 align(AL)A 指定一对、两对或三对源点和定义点,以对齐选定对象,两点或三点对齐对象会发生相应旋转B 二点对齐可以设置是否缩放,不缩放时,系统默认第一对源点与定义点重合,而第二源点仅与定义点旋转共线,三点(三维)对齐时,第一点会重合,第二点共线(方向一致),第三点要求共面,此外三点不能在一条直线上。39 多行文字 mtext(T)40 文字编辑 ddedit(ED)双击文字也可进入编辑41 打断命令 break(BR)A 在两点之间打断选定对象B 线、圆弧、圆、多段线、椭圆、样条曲线、圆环以及其他几种对象类型都可以拆分为两个对象或将其中的一端删除。程序将按逆时针方向删除圆上第一个打断点到第二个打断点之间的部分,从而将圆转换成圆弧。 42 编辑长度命令 lengthen(LEN)A 增量(DE):以指定的增量修改对象的长度,该增量从距离选择点最近的端点(与端点的选择位置有关)处开始测量。差值还以指定的增量修改弧的角度,该增量从距离选择点最近的端点处开始测量。正值扩展对象,负值修剪对象B 百分比(P):通过指定对象总长度的百分数设置对象长度C 全部(T):通过指定从固定端点测量的总长度的绝对值来设置选定对象的长度。“全部”选项也按照指定的总角度设置选定圆弧的包含角。 D 动态(DY):打开动态拖动模式。通过拖动选定对象的端点之一来改变其长度。其他端点保持不变43 特性匹配 matchprop(MA):模型空间:无限大三维空间布局空间:图纸空间:窗交9 鼠标中键的使用,用于保存一定的绘图标准20 对文件进行绘图标准检查并进行修复:打开CAD标准工具栏(工具栏右键)→配置(用于添加自定义的绘图标准;检查(用于根据添加的标准修复新图纸的标准))21 绘图中的平行四边形法则(利用绘制四边形绘制某些图形)A两条直线卡一条直线,绘制一个边直线后:直接绘制倒角或圆角矩形b 标高(E):指定所绘矩形和基准面的垂直距离c 厚度(T);快速计算器的使用(绘图中右键快捷菜单)2. 圆命令:依次输入矩形的长宽,再依次指定长宽:A双击:a 倒角(C)与圆角(F). 擦除命令,范围缩放,在绘图区域最大化显示图形B 按住中键不放可以移动图形10 鼠标右键的使用. dxf文件:表示在储存之后可以在其它三维软件中打开的文件18 . dwt文件,所绘矩形只能在第一象限D 旋转(R):绘制与x轴正方向呈一定夹角的矩形E 选择矩形命令后的其它命令操作;第二点:A常用命令的调用B 绘图中Ctrl + 右键调出捕捉快捷菜单和其它快速命令11 命令的查看.5即可:工具→自定义→编辑程序参数(acad.pgp)12 绘图中确定命令的调用:A 鼠标右键 B ESC键(强制退出命令)C Enter键 D 空格键(输入名称时,空格不为确定)13 重复调用上一个命令: A Enter键 B 空格键 C 方向键选择14 图形输出命令:a 同心圆的画法:a. 输入@(圆心不动) b:@X,Y(直接输入下一个角点的相对坐标)B 尺寸(D):A蓝色. 上下方向键命令 (圆心和半径的自动记录功能)b 圆特殊角度切线画法可采用先绘水平切线再绕圆心同时旋转圆和切线的方法c 绘制圆与两圆相切且圆心在一直线上时,通过平移获取另一边直线B 在圆中绘制相应长度的弦,现在圆心处绘制相同长度的直线,再通过平移获得22 自定义工具栏命令 CUI或输入Toolbar其中命令特性宏中的^C^表示取消正在执行的操作22 循环选择操作方法:Shift+空格用于图形具有共同边界的情况下的选择23 系统变量 Taskbar的作用:0表示在工具栏上只显示一个CAD窗口:@S(长度)&lt,1表示平铺显示所有CAD窗口基本操作和常用命令1 直线命令:用于指定绘制矩形多段线的线宽7 镜像命令:mirror(MI) 注意绘制完后的选项你从以下的内容中选取一些内容进行粘贴与排版,添一些自已的感受就可以打印了。AutoCAD2007&#47
采纳率:68%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)  在cocos2dx中进行矩形的碰撞检测时需要对旋转过的矩形做碰撞检查,由于游戏没有使用Box2D等物理引擎,所以采用了OBB(Oriented bounding box)方向包围盒算法,这个算法是基于SAT(Separating Axis Theorem)分离轴定律的。
  分离轴定律:两个凸多边形物体,如果我们能找到一个轴,使得两个在物体在该轴上的投影互不重叠,则这两个物体之间没有碰撞发生,该轴为Separating Axis。也就是说两个多边形在所有轴上的投影都发生重叠,则判定为碰撞;否则,没有发生碰撞。
  现在,我们来考虑一下矩形,矩形有4条边,那么就有4条轴,由于矩形的对边是平行的,所以有两条轴是重复的,我们仅需要检查相邻的两个轴,那么两个矩形就需要检查4个轴。
  检查投影有两种方法:第一种,把每个矩形的4个顶点投影到一个轴上,这样算出4个顶点最长的连线距离,以后同样对待第二个矩形,最后判断2个矩形投影距离是否重叠。第二种,把2个矩形的半径距离投影到轴上,以后把2个矩形的中心点连线投影到轴上,以后判断2个矩形的中心连线投影,和2个矩形的半径投影之和的大小。
  由于已经有很多文章来介绍OBB的原理,所以这里并不过多解释,我只将我实现的源码列出来仅供大家参考,代码已经经过测试,如下:
#ifndef _OBBRECT_H_
#define _OBBRECT_H_
#include &math.h&
class OBBRect {
OBBRect(float x, float y, float width, float height, float rotation = 0.0f)
: _x(x), _y(y), _width(width), _height(height), _rotation(rotation) {
resetVector();
bool intersects(OBBRect& other) {
float distanceVector[2] = {
other._x - _x,
other._y - _y
for (int i = 0; i & 2; ++i) {
if (getProjectionRadius(_vectors[i]) + other.getProjectionRadius(_vectors[i])
&= dot(distanceVector, _vectors[i])) {
return false;
if (getProjectionRadius(other._vectors[i]) + other.getProjectionRadius(other._vectors[i])
&= dot(distanceVector, other._vectors[i])) {
return false;
return true;
void resetVector() {
_vectors[0][0] = cos(_rotation);
_vectors[0][1] = sin(_rotation);
_vectors[1][0] = -_vectors[0][1];
_vectors[1][1] = _vectors[0][0];
float dot(float a[2], float b[2]) {
return abs(a[0] * b[0] + a[1] * b[1]);
float getProjectionRadius(float vector[2]) {
return (_width * dot(_vectors[0], vector) / 2
+ _height * dot(_vectors[1], vector) / 2);
float _vectors[2][2];
#endif // _OBBRECT_H_
阅读(...) 评论()

我要回帖

更多关于 cocos2dx 旋转角度 的文章

 

随机推荐