Kit*_*adr 0 algorithm geometry unity-game-engine
我在法线向量已知的平面上有两个向量(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);
Run Code Online (Sandbox Code Playgroud)
其中anchor.transform.rotation*Vector3.up表示平面的法线.但是,这不会产生所需的结果
小智 5
使用Cross product计算垂直线:
如果N是平面法线,则垂直线的方向是:
Vector3 dir = Vector3.Cross( N, ( end2 - end1 ).normalized );
Run Code Online (Sandbox Code Playgroud)
该行定义如下:
lr2.SetPosition( 0, end1 );
lr2.SetPosition( 1, end1 + dir );
Run Code Online (Sandbox Code Playgroud)
(使用Cross((end2 - end1).normalized,N);对于相反的方向.