明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: mcxiangxin

[求助]哪位帮忙看一下这个画中心线的程序

  [复制链接]
发表于 2008-4-6 11:37:00 | 显示全部楼层
本帖最后由 作者 于 2008-4-6 11:47:12 编辑

首先先看看计算几何核心:

矢量叉积:

 

 

  计算矢量叉积是与直线和线段相关算法的核心部分。设矢量P = ( x1, y1 )Q = ( x2, y2 ),则矢量叉积定义为由(0,0)p1p2p1+p2所组成的平行四边形的带符号的面积,即:P × Q = x1*y2 - x2*y1,其结果是一个标量。显然有性质 P × Q = - ( Q × P ) P × ( - Q ) = - ( P × Q )。一般在不加说明的情况下,本文下述算法中所有的点都看作矢量,两点的加减法就是矢量相加减,而点的乘法则看作矢量叉积。

 

 

  叉积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系:

 

 

  若 P × Q > 0 , PQ的顺时针方向。

  若 P × Q < 0 , PQ的逆时针方向。

  若 P × Q = 0 , PQ共线,但可能同向也可能反向。

 

 

  折线段的拐向判断:

 

 

  折线段的拐向判断方法可以直接由矢量叉积的性质推出。对于有公共端点的线段p0p1p1p2,通过计算(p2 - p0) × (p1 - p0)的符号便可以确定折线段的拐向:

 

 

  若(p2 - p0) × (p1 - p0) > 0,p0p1p1点拐向右侧后得到p1p2

 

 

  若(p2 - p0) × (p1 - p0) < 0,p0p1p1点拐向左侧后得到p1p2

 

 

  若(p2 - p0) × (p1 - p0) = 0,p0p1p2三点共线。

现在我们来看看对于取舍锐角平分线或钝角平分线的方法:

假设你图上最后一个出错的角度由p0p1,p0p2两条线组成,公共点为p0,角平分线分为两部分:在p0p1,p0p2夹角里的部分线段为p0p3,另一部分线段为p0p4,那么可以得出恒不等式:

(p2 - p0) × (p1 - p0) *(p2 - p0) × (p3 - p0)>0

也就是说p0p1或者p0p2始终是在其他两条线(p0p1或者p0p2、p0p3)的一个旋转方向,要么都是顺时针要么都

是逆时针。

(p2 - p0) × (p1 - p0) *(p2 - p0) × (p4 - p0)<0

也就是说p0p1或者p0p2始终是不在其他两条线(p0p1或者p0p2、p0p4)的一个旋转方向,一个是顺时针,一个

是逆时针方向。

用这种方法可以判断角平分线是否在夹角里。

发表于 2008-5-13 12:58:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-5-13 13:05:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2008-5-13 20:56:00 | 显示全部楼层
我已经做了一个.改天上传.不足的地方,请高手指点
 楼主| 发表于 2008-5-13 21:13:00 | 显示全部楼层
在创建两平行线的中心线时,有时候只能生成一条长度为0的线,请帮忙改善:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2008-5-14 11:54:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-12-7 20:02:34 | 显示全部楼层
顶上~~~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-9 13:50 , Processed in 0.273877 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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