C# 基于四叉树的管线碰撞模块的构建与优化

关于管线碰撞模块的构建与优化


基本判断碰撞方法:

1、两条空间管线中心线之间的最小线距 与(管线管径和 / 2)相比较,得出碰撞关系。

2、分割线法

主要问题(如何寻找管线对进行判断):

一、使用暴力法

C(N,2)进行组合运算,得出所有可能,一一计算判定。

//暴力碰撞方法
int t = 0;
foreach (KeyValuePair<string, LineD> line1 in Pipes_Data)
{
    foreach (KeyValuePair<string, LineD> line2 in Pipes_Data.Where(x => x.Key != line1.Key))
    {
        if (Haslntersection(line1.Value.gxdbh,line2.Value.gxdbh))
        {
            //两条中心线之间的最小距离
            double distance = DistanceBetweenLineSegments(line1.Value, line2.Value);
            //最小不碰撞的距离
            double dis_min = line1.Value.gj / 2000 + line2.Value.gj / 2000;
            if ((distance + rongcha) < dis_min)
            {
                string text = string.Format("最小距离{0} |
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值