乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 230|回复: 14

acDisplayDCS矩阵

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-4 20:08:53 | 显示全部楼层 |阅读模式
这是一个棘手的问题。
就Z轴或法线而言,viewdir-ucsorg是标准化的。
然后我使用任意轴算法来创建x方向和y方向
然后使用ucsorg进行平移。
不幸的是,当ucs设置为view时,这无法与ucsmatrix进行比较。
转换为wcs的getvar viewctr似乎与vba viewport.center相同,但具有z值。
所以我不太确定是否有一个点可以用来创建平面。即使这样,我也不确定x轴是怎么做的,也许它是一个沿着视角旋转的单位向量。
至于target,我真不敢相信它的帮助是如此之少。
在此预先感谢您的帮助。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-4 20:24:43 | 显示全部楼层
我不太确定你想做什么,你想根据当前视图创建一个平面/ucs吗?
请记住,视图方向向量不一定指向ucsorg,向量没有真正的位置,只有方向和长度。给定viewdir vec,AAAlgo应该可以正常工作。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-4 20:32:24 | 显示全部楼层
是的。米克:我一直在用我自己的翻译功能替换翻译功能,并且在acDisplayDCS翻译和当前视图矩阵上都卡住了
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-4 20:43:51 | 显示全部楼层

我猜这是为了视口对齐还是类似的?
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-4 20:59:43 | 显示全部楼层
它最终会以这种方式结束。我一直很难掌握观点。我似乎接近然后失去了它。
视图符号无济于事。
我开始写一个子,在屏幕上添加2条对角线。
我可以通过翻译4点来做到这一点,但似乎无法制作一个可靠的4x4矩阵来使用变换。
使用ucsxdir和ucsydir制作ucs矩阵很容易,但视图矩阵有点令人困惑。
正如我所说,我有z只需要x
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-4 21:11:56 | 显示全部楼层
你需要的是‘相机’位置和ocs。我会看一下arx帮助,看看有什么发现。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-4 21:18:27 | 显示全部楼层
谢谢米克,奇怪的是他们给了目标,却没有给相机。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-4 21:27:25 | 显示全部楼层
查看vba帮助,视图中心是您所需要的,只是它作为二维点提供给您(如您所说)
您应该能够使用带有矢量角度等的三角轴和二维中心点,从目标点计算视图中心的z值
然后,要获得X矢量,如果视图没有任何扭曲,可以使用wcs z矢量创建轴
xvec=viewdir叉积(wcs.zvec)
yvec=viewdir叉积(xvec)
或反转,如果您希望矩阵的z指向远离相机。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-4 21:52:00 | 显示全部楼层
我会试一试,但目标点似乎只有在使用3dorbit时才与视图中心对齐,因为在视图中是ucs的正常现象。我真的不能说它是什么。使用wcsZ向量是我所做的,它没有给出正确的答案。实际上我使用下面的
  1. Function GetOcsFromNormal(N As Variant) As Variant
  2.     'N is the normal vector.
  3.     'Wy is the world Y axis, which is always (0,1,0).
  4.     'Wz is the world Z axis, which is always (0,0,1).
  5.     Dim Wy(2) As Double
  6.     Dim Wz(2) As Double
  7.     Dim Nx As Double, Ny As Double
  8.     Dim Ax, Ay, Ocs(1) As Variant
  9.    
  10.     N = NormaliseVector(N)
  11.     Wy(0) = 0: Wy(1) = 1: Wy(2) = 0
  12.     Wz(0) = 0: Wz(1) = 0: Wz(2) = 1
  13.     Nx = N(0): Ny = N(1)
  14.     If (Abs(Nx) < 1 / 64) And (Abs(Ny) < 1 / 64) Then
  15.          'Ax = Wy X N (where “X” is the cross-product operator).
  16.          Ax = Crossproduct(Wy, N)
  17.     Else
  18.          Ax = Crossproduct(Wz, N)
  19.     End If
  20.     Ocs(0) = NormaliseVector(Ax)
  21.   
  22.     Ay = Crossproduct(N,Ax)   'edit-had this wrong
  23.     Ocs(1) = NormaliseVector(Ay)
  24.     GetOcsFromNormal = Ocs
  25. End Function

,也许我需要使用z值
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2006-9-6 00:45:19 | 显示全部楼层
忘记了x轴必须是水平的。
它的计算结果是GetOcsFrom正常函数给出了正确的答案,但是x和y向量需要旋转减去z(viewdir)周围的视图扭曲量。我有一个矩阵可以做到这一点,围绕一个我适应vba但无法计算出的向量旋转myself.But它似乎可以用更少的数学来完成。
无论如何,我现在至少可以匹配一个视图ucs矩阵。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 12:53 , Processed in 0.967176 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表