明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2112|回复: 3

空间中任意三点,如何转换坐标系使该三点在新坐标系的XY平面内

[复制链接]
发表于 2007-12-20 16:39:00 | 显示全部楼层 |阅读模式
空间中任意三点,如何转换坐标系使该三点在新坐标系的XY平面内
发表于 2007-12-20 18:52:00 | 显示全部楼层
本帖最后由 作者 于 2007-12-21 12:17:26 编辑

'给定点p1,p2,p3

Dim p1(0 To 2) As Double

Dim p2(0 To 2) As Double

Dim p3(0 To 2) As Double

''''''''''''''''''''''''''''

''''''''''''''''''''''''''''

Dim vx(0 To 2) As Double

Dim vy(0 To 2) As Double

Dim vz(0 To 2) As Double

Dim x(0 To 2) As Double

Dim y(0 To 2) As Double

Dim z(0 To 2) As Double

Dim i As Integer

'''

'矢量 vx , vy由点p1,p2,p3决定

for i = 0 To 2

  vx(i)=p2(i)-p1(i)

  vy(i)=p3(i)-p1(i)

Next

'UCS坐标系的x

for i = 0 To 2

  x(i)=vx(i)

Next

'vz = vx X vy  (矢量的外积运算)

vz(0) = vx(1) * vy(2) - vx(2) * vy(1)

vz(1) = vx(2) * vy(0) - vx(0) * vy(2)

vz(2) = vx(0) * vy(1) - vx(1) * vy(0)

'UCS坐标系的z

for i = 0 To 2

  z(i)=vz(i)

Next

'UCS坐标系的y  

y(0) = z(1) * x(2) - z(2) * x(1)

y(1) = z(2) * x(0) - z(0) * x(2)

y(2) = z(0) * x(1) - z(1) * x(0)

'则,UCS坐标系

Dim ucsObj As AcadUCS

Dim ucsx(0 To 2) As Double

Dim ucsy(0 To 2) As Double

For i = 0 To 2

  ucsx(i) = p1(i) + x(i)

  ucsy(i) = p1(i) + y(i)

Next

Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(p1, ucsx, ucsy, "UCSName")

 楼主| 发表于 2007-12-21 15:13:00 | 显示全部楼层

我的思路是这样的:

空间中的任意三点p1、p2、p3,一直线L1过p1、p2点,另一条直线L2过p3点与直线L1相垂于p4点,

以p4点为坐标原点,p1(或p2)、P3点分别为x、y轴上的一点,坐标变换。

发表于 2007-12-21 19:20:00 | 显示全部楼层

你的思路很好。

求垂足的方法本论坛也有不少。也不麻烦。

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 10:26 , Processed in 0.161338 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表