乐筑天下

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

如何画矩形?

[复制链接]

8

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2009-9-29 14:32:00 | 显示全部楼层 |阅读模式
不知道你想说什么,是不是说点两个点,这两个点是矩形的长和宽的中心点,而且长和宽的尺寸均可以输入?
如果是这样你永远也写不出来,因为数学模型就不成立,如下图所示

udsmst1t5mf.jpg

udsmst1t5mf.jpg


图中pt1和pt2是所点的两点,S是两点间的长度,所输入的长和宽的尺寸分别为2A和2B,即半个长度A和半个宽度B和S构成一个三角形,一个三角形的三条边长均已知怎么能保证夹角P是个直角呢,用你的平面几何知识算一下这个角度的公式吧,这明显是一个无法完成的任务,而P只要不是直角你得出来的肯定是一个平行四边形,哈哈
回复

使用道具 举报

3

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
21
发表于 2009-9-30 09:43:00 | 显示全部楼层
  1. Public Function DrawRectang(RecHalfWidth As Double) As Object
  2.     Dim Pt1 As Variant
  3.     Dim Pt2 As Variant
  4.     Dim RectRotation As Double
  5.     Dim objPolyline As Object
  6.     Dim RectangPoint(0 To 11) As Double
  7.    
  8.     ' 获得第一点Pt1
  9.     Pt1 = ThisDrawing.Utility.GetPoint(, "指定起始点")
  10.     ' 获得第二点Pt2
  11.     Pt2 = ThisDrawing.Utility.GetPoint(Pt1, "指定结束点")
  12.     ' 得到两点构成直线的的角度值
  13.     RectRotation = Atn((Pt2(1) - Pt1(1)) / (Pt2(0) - Pt1(0)))
  14.    
  15.     ' 根据Pt1、Pt2两点计算矩形各顶点坐标
  16.     RectangPoint(0) = Pt1(0) - RecHalfWidth * Sin(RectRotation)
  17.     RectangPoint(1) = Pt1(1) + RecHalfWidth * Cos(RectRotation)
  18.    
  19.     RectangPoint(3) = Pt1(0) + RecHalfWidth * Sin(RectRotation)
  20.     RectangPoint(4) = Pt1(1) - RecHalfWidth * Cos(RectRotation)
  21.    
  22.     RectangPoint(6) = Pt2(0) + RecHalfWidth * Sin(RectRotation)
  23.     RectangPoint(7) = Pt2(1) - RecHalfWidth * Cos(RectRotation)
  24.    
  25.     RectangPoint(9) = Pt2(0) - RecHalfWidth * Sin(RectRotation)
  26.     RectangPoint(10) = Pt2(1) + RecHalfWidth * Cos(RectRotation)
  27.    
  28.     Set objPolyline = ThisDrawing.ModelSpace.AddPolyline(RectangPoint)
  29.     objPolyline.Closed = True
  30.    
  31.     Set DrawRectang = objPolyline
  32. End Function

回复

使用道具 举报

8

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2009-10-10 11:59:00 | 显示全部楼层

谢谢wlong的程序,不过画出是个旋转角度的不过这样也好,随机的美感,半宽其实不用设,可由pt1,pt2两个点计算出
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 23:42 , Processed in 0.252105 second(s), 61 queries .

© 2020-2025 乐筑天下

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