两个窗格之间的平分面?C#

两个窗格之间的平分面?C#,c#,3d,geometry,C#,3d,Geometry,我不知道如何解决这个问题,因为我使用的API具有平面数据结构,基本上是定义平面的原点、XY和z向量 如果我有两个平面,如何找到平分面? 这种平面有数学描述吗 从几何学上讲,我会通过计算平面之间的交线来解决这个问题,但不知道如何定义平面方向的点 任何帮助都将不胜感激 在我尝试这样的方法之前,我得到了我想要的,但我想知道是否有一个不做交叉点的解决方案: public static Plane BisectorPlane(Plane a, Plane b) { Rhi

我不知道如何解决这个问题,因为我使用的API具有平面数据结构,基本上是定义平面的原点、XY和z向量

如果我有两个平面,如何找到平分面? 这种平面有数学描述吗

从几何学上讲,我会通过计算平面之间的交线来解决这个问题,但不知道如何定义平面方向的点

任何帮助都将不胜感激

在我尝试这样的方法之前,我得到了我想要的,但我想知道是否有一个不做交叉点的解决方案:

    public static Plane BisectorPlane(Plane a, Plane b)
    {
        Rhino.Geometry.Intersect.Intersection.PlanePlane(a, b, out Line lnA);
        a.Translate(a.ZAxis);
        b.Translate(b.ZAxis);
        Rhino.Geometry.Intersect.Intersection.PlanePlane(a, b, out Line lnB);
        return new Plane( lnA.From,lnA.To,lnB.PointAt(0.5));
    }

我想知道是否有可能解决这个问题,不是几何上的(计算交点),而是数学上的。

你已经得到了交点。现在在这条线上选择任意一点P,作为基点

获取此行的方向向量(dL

获取给定平面S单位法线之和。这是位于平分面上的向量,垂直于相交线

S=(a.正常+b.正常)

现在计算dLS以获得正常值

BisectorN = dL x S
如果需要,将其规格化(使单位长度除以其长度)

bN = BisectorN.Normalize

基点p和法线bN定义平分面

我试过你的方法,它给出了平分面。但问题是,平面在从原点和法线构造时发生移动,而不是从原点和两个x轴和y轴:

        Point3d origin = lnA.PointAt(0.5);
        Vector3d S = a.Normal + b.Normal;
        Vector3d dL = Vector3d.Subtract((Vector3d)lnA.From, (Vector3d)lnA.To);
        Vector3d BisectorN = Vector3d.CrossProduct(dL,S);
        BisectorN.Unitize();

        return new Plane(origin, BisectorN);

我会认为两个平面之间的平分线是一条直线,因为会有一个无限多的平面?e、 书的结尾我使用的方法是:1)两个平面相交,得到一条直线2)沿z轴移动两个平面,然后再次相交。3) 从第一条线和第二条线的中点构造平面。这样我就得到了我想要的正确的飞机。也许它被称为非平分线。但有没有其他方法可以在没有交叉路口的情况下做到这一点?你指的是什么转变?两张图片看起来很相似。看看绿色和红色的轴-x轴和y轴,这些轴的方向和预期的不同?