[Unity]已知圆点和射线 求射线与圆相交的一点 您所在的位置:网站首页 直线与圆相交求交点 [Unity]已知圆点和射线 求射线与圆相交的一点

[Unity]已知圆点和射线 求射线与圆相交的一点

2023-07-23 02:43| 来源: 网络整理| 查看: 265

参考资料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+b

9.一元二次方程的解法例析

10.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有