首页 / C# / c# – 到飞机的距离
c# – 到飞机的距离
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 到飞机的距离,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1302字,纯文字阅读大概需要2分钟。
内容图文
我写了一个简单的小辅助方法,用来计算从一个点到一个平面的距离.然而,它似乎正在回归荒谬的结果.因此,我创建一个平面的代码是:
Plane = new Plane(vertices.First().Position, vertices.Skip(1).First().Position, vertices.Skip(2).First().Position);
相当简单,我希望你会同意.它使用三个点创建XNA平面结构.
现在,在此之后我立即:
foreach (var v in vertices)
{
float d = Math.Abs(v.ComputeDistance(Plane));
if (d > Constants.TOLERANCE)
throw new ArgumentException("all points in a polygon must share a common plane");
}
使用我用于构造平面的同一组顶点,我抛出了异常!在数学上这是不可能的,因为这三个点必须位于飞机上.
我的ComputeDistance方法是:
public static float ComputeDistance(this Vector3 point, Plane plane)
{
float dot = Vector3.Dot(plane.Normal, point);
float value = dot - plane.D;
return value;
}
据我所知,这是正确的.那么我可能做错了什么?或者我可能遇到XNA实施中的错误?
一些示例数据:
Points:
{X:0 Y:-0.5000001 Z:0.8660254}
{X:0.75 Y:-0.5000001 Z:-0.4330128}
{X:-0.75 Y:-0.5000001 Z:-0.4330126}
Plane created:
{Normal:{X:0 Y:0.9999999 Z:0} D:0.5} //I believe D should equal -0.5?
Distance from point 1 to plane:
1.0
解决方法:
似乎你的平面被实现,以便D不是你的一个点投影到平面法线上,而是负面的.您可以将此视为将平面上的矢量投影到法线上.
无论如何,我相信改变
float value = dot - plane.D;
至
float value = dot + plane.D;
应该解决的问题. HTH.
内容总结
以上是互联网集市为您收集整理的c# – 到飞机的距离全部内容,希望文章能够帮你解决c# – 到飞机的距离所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。