乐筑天下

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

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

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2007-12-20 16:39:00 | 显示全部楼层 |阅读模式
空间中任意三点,如何转换坐标系使该三点在新坐标系的XY平面内
回复

使用道具 举报

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2007-12-20 18:52:00 | 显示全部楼层

'给定点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")
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2007-12-21 15:13:00 | 显示全部楼层
我的思路是这样的:
空间中的任意三点p1、p2、p3,一直线L1过p1、p2点,另一条直线L2过p3点与直线L1相垂于p4点,
以p4点为坐标原点,p1(或p2)、P3点分别为x、y轴上的一点,坐标变换。
回复

使用道具 举报

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2007-12-21 19:20:00 | 显示全部楼层
你的思路很好。
求垂足的方法本论坛也有不少。也不麻烦。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 13:38 , Processed in 0.802606 second(s), 60 queries .

© 2020-2025 乐筑天下

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