明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: charlesli8

让四边形的每条边偏移不一样的值

[复制链接]
 楼主| 发表于 2015-2-1 23:02 | 显示全部楼层
'//极角比较, 返回-1: p0p1 在 p0p2 的右侧,返回 0:p0,p1,p2 共线
Public Function Cmp_PolarAngel(P1 As point, P2 As point, pb As point) As Long
    Dim delta As Double
    delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)
    If delta < 0# Then
        Cmp_PolarAngel = 1
    ElseIf delta = 0# Then
        Cmp_PolarAngel = 0
    Else
        Cmp_PolarAngel = -1
    End If
End Function
 楼主| 发表于 2015-2-1 23:05 | 显示全部楼层
charlesli8 发表于 2015-2-1 21:12
你说的是主代码吧?

'//极角比较, 返回-1: p0p1 在 p0p2 的右侧,返回 0:p0,p1,p2 共线
Public Function Cmp_PolarAngel(P1 As point, P2 As point, pb As point) As Long
    Dim delta As Double
    delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)
    If delta < 0# Then
        Cmp_PolarAngel = 1
    ElseIf delta = 0# Then
        Cmp_PolarAngel = 0
    Else
        Cmp_PolarAngel = -1
    End If
End Function
这个函数中的x.y是从哪里来的? delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)这一句可否解释下  多谢
发表于 2015-2-1 23:54 | 显示全部楼层

point是自定义类型,包括x,y
delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)这一句就是向量叉积!
 楼主| 发表于 2015-2-2 19:15 | 显示全部楼层
charlesli8 发表于 2015-2-1 21:12
你说的是主代码吧?

'//极角比较, 返回-1: p0p1 在 p0p2 的右侧,返回 0:p0,p1,p2 共线
Public Function Cmp_PolarAngel(P1 As point, P2 As point, pb As point) As Long
    Dim delta As Double
    delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)
    If delta < 0# Then
        Cmp_PolarAngel = 1
    ElseIf delta = 0# Then
        Cmp_PolarAngel = 0
    Else
        Cmp_PolarAngel = -1
    End If
End Function
这是个传递函数,请问x,y是从哪里来的,还有delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y) 是怎么计算的?
 楼主| 发表于 2015-2-2 19:17 | 显示全部楼层
'//极角比较, 返回-1: p0p1 在 p0p2 的右侧,返回 0:p0,p1,p2 共线
Public Function Cmp_PolarAngel(P1 As point, P2 As point, pb As point) As Long
    Dim delta As Double
    delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)
    If delta < 0# Then
        Cmp_PolarAngel = 1
    ElseIf delta = 0# Then
        Cmp_PolarAngel = 0
    Else
        Cmp_PolarAngel = -1
    End If
End Function
这是个传递函数,请问x, y是从哪里来的?delta = (P1.x - pb.x) * (P2.y - pb.y) - (P2.x - pb.x) * (P1.y - pb.y)是怎么算的?
发表于 2015-2-2 19:49 | 显示全部楼层
x,y是选择那些点,然后把acadpoint的x,y给point(p1,p2,pb)
第二个问题,你看看向量叉积的相关书箱吧(网上找)
 楼主| 发表于 2015-2-6 18:26 | 显示全部楼层
charlesli8 发表于 2015-2-1 21:12
你说的是主代码吧?

这思路我也会,代码写了几天了还是弄不出来。
有些事说起来容易,做起来难,估计你也不一定能写出来呢。
 楼主| 发表于 2015-2-6 21:44 | 显示全部楼层
charlesli8 发表于 2015-2-1 21:12
你说的是主代码吧?

你自己试着写下那个代码吧  我反正是写不出来  你试试 真不一定能写出来 有的事看起来简单,但自己做起来就不是那么简单了
 楼主| 发表于 2015-2-6 21:50 | 显示全部楼层
这玩意还有第二页,我说我一发布怎么就不见了呢。  叉乘我看了,你说的思路方法我也试了,就是没试出来。你试试,要能写出来,我付给你20明经币。

点评

20明经币,2元钱。。。。 jokeing?  发表于 2015-2-6 22:50
发表于 2015-2-6 22:52 | 显示全部楼层
论坛是个学习的地方,如果你真的需要源码,可以到http://bbs.mjtd.com/plugin.php?id=it618_wike:wikehall发布任务
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 14:31 , Processed in 0.172746 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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