明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2794|回复: 4

关于圆弧顺时针逆时针的问题

[复制链接]
发表于 2005-6-11 21:49:00 | 显示全部楼层 |阅读模式
已知两个端点坐标,圆心坐标和半径,请问怎么样才能判断出圆弧的转向,希望大家指点下.我给出几个特例,希望大家验证一下, 例子1.p1(95.8802,400.8767),p2(79.2644,432.9074), o1(5442.7650,2451.9570),r=6230.19 例子2.p1(721.5960,782.164) p2(563.1196,710.387), o1(705.756,606.300),r=176.576
谢谢大家
 楼主| 发表于 2005-6-12 16:05:00 | 显示全部楼层
怎么没人回答呀,呵呵
发表于 2005-7-1 13:49:00 | 显示全部楼层
'用函数snsj(p1(),p2(),p3())可以确定点p1、p2、p3的顺时针或逆时针排列顺序。例如:
'p1(1) = 95.8802: p1(2) = 400.8767
'p2(1) = 79.2644: p2(2) = 432.9074
'o1(1) = 5442.765: o1(2) = 2451.957
'snsj(p1(),p2() ,o1())=False, p1、p2、o1三点逆时针排列 'p1(1) = 721.596: p1(2) = 782.164
'p2(1) = 563.1196: p2(2) = 710.387
'o1(1) = 705.756: o1(2) = 606.3
'snsj(p1(),p2() ,o1())=True, p1、p2、o1三点顺时针排列 Private Function snsj(ByRef p1() As Double, ByRef p2() As Double, ByRef p3() As Double) As Boolean
Dim sj As Double
sj = p1(1) * p2(2) + p2(1) * p3(2) + p3(1) * p1(2) - p2(1) * p1(2) - p3(1) * p2(2) - p1(1) * p3(2)
snsj = False '逆时针
If sj < 0# Then snsj = True '顺时针 End Function
发表于 2005-7-1 21:38:00 | 显示全部楼层
这样没办法判断。
发表于 2005-7-4 08:51:00 | 显示全部楼层
已知两个端点坐标,圆心坐标和半径是不能够判断的,条件差太多,首先两个端点谁是起点谁是终点不知道,所以就是两个表面看起来一样的弧,起点和终点不一样,顺时针和逆时针都有可能,再次,如果没有弧的长度,即使两个弧的起点和终点一样,一个优弧一个劣弧,它的旋转方向也不一样(这里面还要考虑如果是半圆弧的情况,有点难度)!!如果要判断的弧是已经存在的,可以读取它的起点终点,半径,圆心,算出来Bulge,然后可以用程序绘制同样的弧,再判断这个弧的起点和终点是不是和原来的弧的起点和终点重合,如果重合则是逆时针,如果不重合则是顺时针,因为由程序生成的弧都是逆时针的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 12:36 , Processed in 0.167374 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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