50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
// Copyright (C), 1998-2007, Beijing Tangent Engineering Software Co. Ltd.
|
|
// = FileName: FilroadConnectGroup.h
|
|
// = Version: 8.5
|
|
// = Author: lgh
|
|
// = Date: 2010-10-22 16:49:35
|
|
// = Description: 组织管理CFilroadConnect,检测分组,检测组内是否可以进行同圆心倒角。
|
|
// = Maintainers:
|
|
#pragma once
|
|
|
|
#include "FilroadConnect.h"
|
|
|
|
class CFilroadConnectGroup
|
|
{
|
|
public:
|
|
CFilroadConnectGroup(void);
|
|
CFilroadConnectGroup(CFilroadConnect *pConnect, BOOL bMid);
|
|
|
|
~CFilroadConnectGroup(void);
|
|
|
|
static void SetSameCenterLimit(double dDis){m_dDis = dDis;}
|
|
static double DisLimit() {return m_dDis;}
|
|
|
|
// 添加一个connect到组内。
|
|
void AddConnect(CFilroadConnect *pConnect);
|
|
// 合并另一个组connect到组内。
|
|
void AddGroup(CFilroadConnectGroup &ohterGroup);
|
|
|
|
// 检测一个点是否能够添加到组内。
|
|
BOOL CheckAConnect(CFilroadConnect *pConnect);
|
|
|
|
BOOL Draw(double dRaidus, AcAryCircArc2d &arEdgeArc, AcAryCircArc2d &arMidArc);
|
|
|
|
// 检测某connect是否是拐角道路的中线。
|
|
// 如果该group不是拐角,直接返回false;
|
|
BOOL CheckInsideMidConnect(CFilroadConnect *pConnect);
|
|
// 添加一个中线connect到组内。
|
|
void AddMidConnect(CFilroadConnect *pConnect);
|
|
|
|
// 检测当前组是否是双线道路拐角
|
|
BOOL TestCornerRoad(CFilroadConnect *&pConnectOut, CFilroadConnect *& pConnectIn) const;
|
|
|
|
private:
|
|
ArFilroadConnectPointer m_arConnect;
|
|
ArFilroadConnectPointer m_arMidConnect;
|
|
BOOL m_bSameRadius;
|
|
static BOOL m_bForceSameRadius;// 强制的同圆心处理,只检测方向不检测距离。
|
|
static double m_dDis;
|
|
};
|
|
|
|
typedef AcArray<CFilroadConnectGroup*> ArFilroadGroupPointer; |