我在一条已知法线向量的平面上有两条直线的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 表示平面的法线。 但是,这不会产生所需的结果
答案 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);用于相反方向。