Physics&Math
文章平均质量分 91
拳四郎
拳四郎
展开
-
碰撞检测之OBB-OBB的SweepTest
提要当物体在运动的时候,普通的每帧进行碰撞检测已经无法满足要求,比如子弹的运动两帧的位置已经直接将中间的板子穿过了,所以 t 时刻和 t +1 时刻的检测都是失效的。这时候需要用到的就是sweep检测了。今天要处理的就是AABB的Sweep检测。2D情况如下图,当前位置是蓝色Box所在位置,目的位置是绿色框所在位置。2D情况只用处理x,y方向的,利用SAP理论,分别在各个轴向计算可以移动的距离。代原创 2016-04-12 01:20:57 · 5380 阅读 · 2 评论 -
详解MVP矩阵之ViewMatrix
ViewMatrix用于直接将World坐标系下的坐标转换到Camera坐标系下。已知相机的坐标系,还有相机在世界空间下的坐标.就可以求出ViewMatrix,下面进行具体推导。令UVN为相机坐标系下的三个基,,对于一个相机来说,它在开始的时候和世界坐标系是重合的,用户控制相机在世界空间中移动之后,相机的状态可以用两个属性来描述——朝向和位置。也就是说,有了这两个属性,一个相机模型在世界中的状态就原创 2016-03-28 21:15:23 · 38045 阅读 · 1 评论 -
详解MVP矩阵之ProjectionMatrix
简介透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 具体的理论推导过程可以参考下面的几个Link,深入探索透视投影变换深入探索透视投影变换(续)OpenGL TransformationOpenGL Project原创 2016-09-29 21:39:40 · 23191 阅读 · 2 评论 -
碰撞检测之Ray-Capsule检测
Capsule的射线检测和Cylinder的类似,只是把上下两个面换成了两个半球,代码上稍作区别即可。Capsule类型定义 public class Capsule : NGeometry { public Vector3 p0; public Vector3 p1; public float radius; public原创 2016-02-27 02:15:59 · 3172 阅读 · 1 评论 -
碰撞检测之Ray-Sphere检测
最近要开一个物理相关的系列,首先整理总结一下去年写的一些东西,然后看能不能撸一个物理引擎出来。射线检测在之前写光线追踪的时候有写过一些,但当时写得都比较简单,恰好最近工作上又要用到这些,所以就好好来写写。原创 2016-02-22 00:46:10 · 4313 阅读 · 5 评论 -
碰撞检测之Ray-Box检测
两个凸包多边形,当且仅当存在一条线,这两个多边形在这条线上的投影不相交,则这两个多边形也不相交原创 2016-02-23 02:27:37 · 5096 阅读 · 3 评论 -
碰撞检测之Ray-Cylinder检测
正交基和标准正交基首先来看定义Let S = {v1, v2, ... , vk} be a set of vectors in Rn, then S is called an orthogonal if vi . vj=0for all i not equal to j. An orthogonal set of vectors is called orthonormal if原创 2016-02-26 02:13:18 · 6677 阅读 · 5 评论 -
碰撞检测之Ray-Plane检测
平面定义public class Plane : CuGeometry{ // p satisfies normal.dot(p) + d = 0 public Plane() : base(GeometryType.Plane) { } public Plane(Vector3 _normal, float _d) : base(GeometryType原创 2016-03-01 01:30:37 · 3744 阅读 · 0 评论 -
碰撞检测之Sphere-Sphere检测
今天超级简单!判断两个球相交不相交,直接判断两个球心的距离是否大于两个半径的和就可以了。检测代码public static bool IntersectSphereSphere(Sphere sphere0, Sphere sphere1) { Vector3 delta = sphere0.center - sphere1.center;原创 2016-03-01 23:43:06 · 3032 阅读 · 0 评论 -
碰撞检测之OBB-OBB检测
2D情况首先回顾一下SAP两个凸包多边形,当且仅当存在一条线,这两个多边形在这条线上的投影不相交,则这两个多边形也不相交.这条线称为Separating Axis.垂直Separating Axis存在一条Separating Line将两个多边形分开。这里还有一个要确定的,就是如果两个矩形之间存在Separating Line,则一定存在一条和两个矩形中的一条边平行。每个矩形对边平行,则我们只需原创 2016-03-07 02:20:14 · 22569 阅读 · 11 评论 -
碰撞检测之Sphere-Box检测
检测思路首先要做的是将Box转为AABB,然后判断圆心是否在Box内,用的就是之前的SAT如果圆心在Box内,肯定相交,如果不在圆心内,则有四种情况,与顶点相交,与楞相交,与面相交,这里的确定也是通过SAT来确定。在二维中,如果圆心不box内,有两种情况只要对比红色线段的长度和圆的半径就可以了。代码 public static bool IntersectSphereBox(Sphere sphe原创 2016-03-06 02:22:53 · 3377 阅读 · 0 评论 -
详解MVP矩阵之齐次坐标和ModelMatrix
其次坐标(Homogeneous Coordinates)其次坐标这个概念在第一次看real-time rendering 这本书的时候就有提起到,但当时看的一头雾水,只知道其次坐标在某些计算中比较方便,而事实上齐次坐标有着非常重要的意义和作用,主要是在处理三维透视方面,常用的几个地方,比如texture mapping 透视矫正,Projection Matrix的计算等等。在笛卡尔坐标系中,两原创 2016-03-27 21:07:44 · 13133 阅读 · 3 评论