我会试一试,但目标点似乎只有在使用3dorbit时才与视图中心对齐,因为在视图中是ucs的正常现象。我真的不能说它是什么。使用wcsZ向量是我所做的,它没有给出正确的答案。实际上我使用下面的
- Function GetOcsFromNormal(N As Variant) As Variant
- 'N is the normal vector.
- 'Wy is the world Y axis, which is always (0,1,0).
- 'Wz is the world Z axis, which is always (0,0,1).
- Dim Wy(2) As Double
- Dim Wz(2) As Double
- Dim Nx As Double, Ny As Double
- Dim Ax, Ay, Ocs(1) As Variant
-
- N = NormaliseVector(N)
- Wy(0) = 0: Wy(1) = 1: Wy(2) = 0
- Wz(0) = 0: Wz(1) = 0: Wz(2) = 1
- Nx = N(0): Ny = N(1)
- If (Abs(Nx) < 1 / 64) And (Abs(Ny) < 1 / 64) Then
- 'Ax = Wy X N (where X is the cross-product operator).
- Ax = Crossproduct(Wy, N)
- Else
- Ax = Crossproduct(Wz, N)
- End If
- Ocs(0) = NormaliseVector(Ax)
-
- Ay = Crossproduct(N,Ax) 'edit-had this wrong
- Ocs(1) = NormaliseVector(Ay)
- GetOcsFromNormal = Ocs
- End Function
,也许我需要使用z值 |