在已知法线的平面上垂直于一条线绘制一条线

时间:2018-07-09 14:17:07

标签: algorithm unity3d geometry

我在一条已知法线向量的平面上有两条直线的vector(Vector3)位置。我想做的是在同一平面上画一条垂直于该直线的线。 假设end1和end2是两个向量,分别代表原始行的末端 我现在正在尝试的内容:

                    var line1 = end1 + ( (end2-end1)* 1 );
                    var rotatedLine = Quaternion.AngleAxis( 90, anchor.transform.rotation*Vector3.up ) * end1;
                    //Debug.DrawLine(end2, rotatedLine, Color.blue);
                    var newLine1 = Instantiate(line );
                    LineRenderer lr2 = newLine1.GetComponent<LineRenderer>();
                    lr2.SetPosition(0,end1);
                    lr2.SetPosition(1,rotatedLine);

其中 anchor.transform.rotation * Vector3.up 表示平面的法线。 但是,这不会产生所需的结果

1 个答案:

答案 0 :(得分:5)

使用叉积计算垂直线:

如果N是平面法线,则垂直线的方向为:

Vector3 dir = Vector3.Cross( N, ( end2 - end1 ).normalized );

,该行定义为:

lr2.SetPosition( 0, end1 );
lr2.SetPosition( 1, end1 + dir );

(将Cross((end2-end1).normalized,N);用于相反方向。