日期:2014-05-18  浏览次数:22431 次

c#怎么表示一个向量,及两个向量的叉乘

如图
其中
P1 ,P2 对应于线段的两个端点, d 表示的是线段的走向的单位向量, N 表
示端点 P1 处的法向,S 是待求的向量,由N 与S 可以确定端面所在的平面。
这个过程使用空间解析几何中的叉乘(cross product)来确定,因此如果已知一条
平面上的 2 个非平行向量,就可以通过叉乘求得于这个平面垂直的法线。计算公式
如公式 4-3:
S = d × N

c#怎么求出P1端点处的法线,只要求出其中一条就行,还有向量叉乘怎么表示

------解决方案--------------------
图挂了,看不到……
------解决方案--------------------
你把图片上传到你的CSDN空间相册去,然后在网站中打开图片,右击复制图片链接,在帖子编辑中添加图片,粘贴链接,结束。
还有关于求法向量的,如果是求平面法向量,只要知道平面上不共线的两个向量,法向量跟它们俩乘积为0;单独求某个向量的法向量,即只要两向量乘积为0;如果你这个基本不懂或者都不知道向量怎么相乘,复习向量去……
------解决方案--------------------
WPF的基础库PresentationCore.dll里有相关的结构和运算,在System.Windows.Media.Media3D命名空间中的Vector3D 结构。
------解决方案--------------------
MSDN上就有:
C# code

                          Vector3D vector1 = new Vector3D(20, 30, 40);//向量1=(20,30,40)
                          Vector3D vector2 = new Vector3D(45, 70, 80);//向量2=(45,70,80)
                          Vector3D crossProduct = new Vector3D();//叉积结果
  
                          crossProduct = Vector3D.CrossProduct(vector1,vector2);//计算向量1×向量2

------解决方案--------------------
用运算符重载:
C# code

public class Vector3D
{
   public double x{get;set;}
   public double y{get;set;}
   public double z{get;set;}
}
public Vector3D operator * (Vector3D lhs,Vector3D rhs)
{
   Vector3D reVector3D = new Vector3D();
   reVector3D.x=lhs.x*rhs.x;
   reVector3D.y=lhs.y*rhs.y;
   reVector3D.z=lhs.z*rhs.z;
   return reVector3D;
}

//调用时:
Vector3D vector1 = new Vector3D(20, 30, 40);//向量1=(20,30,40)
Vector3D vector2 = new Vector3D(45, 70, 80);//向量2=(45,70,80)
Vector3D crossProduct = new Vector3D();//叉积结果
crossProduct=vector1*vector2;

------解决方案--------------------
向量,在3D处理中经常使用,一般用float[]或者double[]表示,
------解决方案--------------------
C#提供了复数及其运算,向量可以表示成复数形式。