[Unity]已知圆点和射线 求射线与圆相交的一点
来源:互联网 发布:悠悠乎与颢气俱 编辑:程序博客网 时间:2024/05/16 12:51
参考资料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.
9.一元二次方程的解法例析
10.
- [Unity]已知圆点和射线 求射线与圆相交的一点
- 射线和圆的相交
- 求射线与线段相交的最多交点 poj 4048
- 过该点作一条射线,然后判断该射线与三条边的相交情况
- 3D模型下的鼠标拣选和碰撞检测-射线与圆的相交算法
- 射线与球面相交
- 三角形与射线相交
- 已知2点绘制射线
- 射线与平面的相交检测
- 射线与球的相交性检测
- 射线和三角面的相交判断
- Unity 2D射线与 3D射线 UI射线
- 射线与平面相交判断
- 射线和三角形相交检测
- 射线与圆的位置关系
- 空间三角形与射线相交并求交点的重心坐标系表示
- 空间三角形与射线相交并求交点的重心坐标系表示--转
- 射线与三角形求交的计算
- 51nod 1479 小Y的数论题
- jquery 时间戳转换日期
- Java-Arrays.asList()使用中的问题
- Git
- Python Tkinter 简单登录界面
- [Unity]已知圆点和射线 求射线与圆相交的一点
- Mac中打开命令行终端的方法
- 运算符重载
- Java实现-最大子数组差
- Cocos2d入门
- 小世界网络中的SIRS传染病模型实现
- Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)
- JSON与XML的区别比较
- 约瑟夫环问题