[Unity]已知圆点和射线 求射线与圆相交的一点 | 您所在的位置:网站首页 › 直线与圆相交求交点 › [Unity]已知圆点和射线 求射线与圆相交的一点 |
参考资料1: magnitude Returen the length of vector(Read Only). 然后就试了一下这个方法。 Vector3 P1 = new Vector3(1,1,1); Vector3 P2 = new Vector3(2,2,2); print((P1-P2).magnitude); 已知圆心、半径、角度,求出圆上的点坐标 // 圆点坐标:(orignX,orignY) // 半径:r // 角度:angle // // 则圆上任一点为:(x1,y1) var x1 = orignX + r * Mathf.Cos(angle * Mathf.Deg2Rad ); var y1 = orignY + r * Mathf.Sin(angle * Mathf.Deg2Rad );--------------------------------------------------------------------------------------------------------求圆和直线交点坐标 根据参考资料 5 直线方程的几种表达方式 (1)一般式:Ax+By+C=0 (其中A、B不同时为0) (2)点斜式:y-y0=k(x-x0) (3)截距式:x/a+y/b=1 (4)斜截式: Y=KX+B (K≠0) (5)两点式:(y-y0)/(y0-y1)=(x-x0)/(x0-x1)
根据参考资料6 直线方程从 两点式 转换 为 一般式 (y-y1)/(y2-y1)=(x-x1)/(x2-x1) (y-y1)(x2-x1)=(x-x1)(y2-y1) (y2-y1)x-(x2-x1)y-x1(y2-y1)+y1(x2-x1)=0
确定的一点 的坐标(x1, y1),另外一点的坐标(x2,y2) 方程 1: (y2-y1)x - (x2-x1)y = x1(y2-y1)-y1(x2-x1); (y2-y1)x = x1(y2-y1)-y1(x2-x1)+(x2-x1)y ; 由直线的一般方程x=ky+b,把 上面的方程 和下面 的解,的值进行变化 ,根据 参考资料 8
由方程2:x=ky+b 解: x = [ x1(y2-y1) - y1 (x2 - x1) ] / (y2 - y1) + [ (x2 -x1) y ] / ( y2 - y1 ) ; k = (x2 -x1) / ( y2 - y1 ); b = [ x1(y2-y1) - y1 (x2 - 1) ] / (y2 - y1);
根据参考资料7 圆的方程: 两种情形: 1.这个点是圆心 由(x-a)^2+(y-b)^2=r^2可直接得出. 2.这个点在圆上,那么条件不够,还需圆上另一个不同的点.首先设圆方程(x-a)^2+(y-b)^2=r^2,再把两点坐标代入得一个二元方程组,从而求出a,b. 圆心坐标(m,n) (x - a)^2 + (y-b)^2 = r ^2 由于上面的 改为 方程3: (x -m)^2 + (y - n)^2 = r^2 把方程2 的解 x , k , b 带入 方程3 (ky + b - m )^2 + (y - n)^2 = r^2
(k^2 + 1) y^2 + [ 2k(b - m) - 2n]y+ n^2 + (b - m)^2 - r^2 = 0 根据参考资料8
公式法 ≥0时,方程有解;<0时,方程无解。先化为一般形式再用公式。 ex^2 + fx+ g =0 e = (k^2 + 1) f = [ 2k(b - m) - 2n] g = n^2 + (b - m)^2 - r^2 圆心坐标(m,n) k = (x2 -x1) / ( y2 - y1 ); b = [ x1(y2-y1) - y1 (x2 - 1) ] / (y2 - y1); 一点 的坐标(x1, y1), 另外一点的坐标(x2,y2)
判断 e^2 - 4 f g 有解 ,则 数学 与 编程的区别 ,编程 可以 直接用逻辑判断 数学必须通过算式 进行计算,得到准确的答案。
然而 编程 如果 使用大量变量 进行 精确计算,会使用大量 double 变量 使得程序变慢。 逻辑判断的重要性。
-------------------------------------------------------------------------------------------------------- 参考资料: 1. 偶然发现的Unity3d,两点之间的距离计算。2.已知圆心、半径、角度,求出圆上的点坐标 3.unity3d 在一个空心圆范围内随机生成物体 4. Unity Mathf 数学运算(C#)5.直线方程的几种表达方式? 6.直线的两点式方程如何转化为一般式 7.知道圆心半径和一个点怎么求圆的方程 8. 为什么社x=ky+b而不设y=kx+b9.一元二次方程的解法例析 10. |
CopyRight 2018-2019 实验室设备网 版权所有 |