c# – 一条线和一个球体的交点?

c# – 一条线和一个球体的交点?,第1张

概述我有一个简单的对象,允许您分配三个属性(x,y,z)(让我们称这个对象为“点”,因为它就是这样).然后我有一个第二个对象,其中一个方法接受第一个对象的两个实例,并返回三维空间中两个“点”之间的距离.我还需要一种能接受两个“点”的方法 和一个double,表示行进的距离(从使用的第一个“点”参数)返回带有x,y,z坐标的“点”对象. 除了计算所提供的两个点之间的原始线上的点坐标,即距离第一个点一定距 @H_419_2@ 我有一个简单的对象,允许您分配三个属性(x,y,z)(让我们称这个对象为“点”,因为它就是这样).然后我有一个第二个对象,其中一个方法接受第一个对象的两个实例,并返回三维空间中两个“点”之间的距离.我还需要一种能接受两个“点”的方法
和一个double,表示行进的距离(从使用的第一个“点”参数)返回带有x,z坐标的“点”对象.

除了计算所提供的两个点之间的原始线上的点坐标,即距离第一个点一定距离之外,我对所有事情都很满意.

“点”对象:

public class POR{    private double PORX;    private double PORY;    private double PORZ;    public double X    {        get { return PORX; }        set { PORX = value; }    }    public double Y    {        get { return PORY; }        set { PORY = value; }    }    public double Z    {        get { return PORZ; }        set { PORZ = value; }    }    public POR(double X,double Y,double Z)    {        PORX = X;        PORY = Y;        PORZ = Z;    }

我正在使用:

public double Pordistance(POR por1,POR por2)    {        return Math.Round(Math.Sqrt( Math.Pow((por1.X - por2.X),2) + Math.Pow((por1.Y - por2.Y),2) + Math.Pow((por1.Z - por2.Z),2)),2);    }

返回我需要的那两点之间的距离

public POR IntersectPOR (POR por1,POR por2,double distance){}

其中距离是从por1到por2的距离.

解决方法 这可以通过矢量的一些帮助来完成.

假设您的起点叫做P,另一个点是Q,距离是d.你想在距离P到Q的距离d处找到PQ线上的点.

>首先,您需要找到旅行方向.这是通过寻找Q – P来完成的

v = Point(Q.x - P.x,Q.y - P.y,Q.z - P.z)

>现在你需要在那个方向找到单位向量,所以

scale = sqrt(v.x*v.x + v.y*v.y + v.z*v.z)unit = Point(v.x/scale,v.y/scale,v.z/scale)

>现在你需要找到代表行进距离的向量:

t = Point(unit.x*d,unit.y*d,unit.z*d)

>要查找最终位置,请将您的旅行向量添加到起点:

final = Point(P.x + t.x,P.y + t.y,P.z + t.z)
@H_419_2@ 总结

以上是内存溢出为你收集整理的c# – 一条线和一个球体交点?全部内容,希望文章能够帮你解决c# – 一条线和一个球体的交点?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存