基于APE物理引擎的管线容积率计算方法

容积率一般应用在房地产开发中,是指用地范围内地上总建筑面积与项目总用地面积的比值,这个参数是衡量建设用地使用强度的一项非常重要的指标。在其他行业,容积率的计算也非常重要,如产品利用率、管道使用率等等。那么在监控系统中,如何能够生动形象的表达容积率的计算,是的监控系统具有准确性、安全性的同时,还具备了多样性,良好交互性等等。 最近的游戏产业发展也非常迅速,在手持终端3D的游戏也越来越多,那么如果我们将游戏引擎融入到监控系统中,会实现什么样的效果呢,本文重点介绍使用APE物理引擎结合TWaver 2D产品实现管线的容积率计算。 先来看下效果:
guandao2
物理引擎很多,我们使用比较容易入手的APE引擎,首先要对APE物理引擎有所了解,可以下载经典的APEdemo进行研究,下载链接:APE物理引擎Demo(提取密码:eyjm)。简单的介绍下APE:

AbstractCollection  所有群组的抽象类

AbstractConstraint  所有物理相互作用的的抽象类

AbstractItem  所有相互作用(碰撞)、粒子的基类

AbstractParticle  关于粒子的基类

APEngine  主引擎、力的类

CircleParticle  圆形粒子

RectangleParticle  矩形粒子

Composite  可以包含粒子和碰撞的复合物类

Group  一个组的类,可以包含粒子、碰撞、复合物

SpringConstraint  两个粒子之间类似弹性碰撞的类(弹簧)

Vector  力

WheelParticle  一个粒子,模拟轮子行为

接下来开始结合TWaver 2D产品:

1.创建一个具有物理参数的网元CircleParticle:类CircleParticle继承于AbstractParticle,AbstractParticle继承于TWaver的Node网元;

 

import java.awt.geom.*;
import twaver.TWaverConst;
	public class CircleParticle extends AbstractParticle {
		private double _radius;

		@Override
		public String getUIClassID() {
			return CircleParticleUI.class.getName();
		}
		
		public CircleParticle (
				double x, 
				double y, 
				double radius, 
				boolean fixed,
				double mass, 
				double elasticity,
				double friction) {
			super(x, y, fixed, mass, elasticity, friction);
			_radius = radius;

			if((Double.valueOf(x) != null) && (Double.valueOf(y) != null)){
				this.setLocation(x, y);
			}
			
			this.putCustomDraw(true);
			this.putCustomDrawShapeFactory(TWaverConst.SHAPE_CIRCLE);
		}

		@Override
		public int getWidth() {
			// TODO Auto-generated method stub
			if(Double.valueOf(_radius) != null){
				return (int) _radius*2;
			}
			return super.getWidth();
		}
		
		@Override
		public int getHeight() {
			// TODO Auto-generated method stub
			if(Double.valueOf(_radius) != null){
				return (int) _radius*2;
			}
			return super.getHeight();
		}
		
		public double getRadius() {
			return _radius;
		}		
		
		public void setRadius(double r) {
			_radius = r;
		}
		
		public void paint() {	
			if(curr.y > 500) return;
			if(Math.pow(curr.x+_radius-330,2) + Math.pow(curr.y+_radius-240, 2) > 150*150){
				return;
			}
			this.setLocation((int)(curr.x - getRadius()), (int)(curr.y - getRadius()));
		}
	
		public Interval getProjection(Vector axis) {
			double c = curr.dot(axis);
			interval.min = c - _radius;
			interval.max = c + _radius;
			return interval;
		}
		
		public Interval getIntervalX() {
			interval.min = curr.x - _radius;
			interval.max = curr.x + _radius;
			return interval;
		}
				
		public Interval getIntervalY() {
			interval.min = curr.y - _radius;
			interval.max = curr.y + _radius;
			return interval;
		}
	}

 2.另外创建一个视图类CircleParticleUI类,继承NodeUI,用于绘制网元。

 

 

import twaver.Node;
import twaver.network.TNetwork;

public class CircleParticleUI extends AbstractParticeUI{

	public CircleParticleUI(TNetwork network, Node node) {
		super(network, node);
	}
}

 这样物理引擎下的网元就创建成功了,接下来就可以按照TWaver的方式创建加载网元了。

 

 

//初始化场景,加载网元到box和物理引擎中
private void initWorld(){
APEngine.init((double) 1 / 5);
		APEngine.setCollisionResponseMode(APEngine.STANDARD);
		APEngine.addMasslessForce(new Vector(0, 10));

		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				int Count = 500;
				for (int i = 0; i < Count; i++) {
					float centerX = 330;
					float centerY = 240;
					float radius = 150;
					float x = (float) (centerX + radius
							* Math.cos(Math.PI * 2 / Count * i));
					float y = (float) (centerY + radius
							* Math.sin(Math.PI * 2 / Count * i));

					CircleParticle circle = new CircleParticle(x, y, 1, true, 1, 0, 1);
					APEngine.addParticle(circle);
					box.addElement(circle);
					i++;
				}
				
			}
		});
		
		paintQueue = APEngine.getAll();
	}

 

//更新容积率以及告警显示规则
public void updateWorld() {
    APEngine.step();
    alarm.setName(Count+"个管道"+"/剩余面积:"+remainS/totalS*100+"%");
	if(remainS/totalS*100 <15){
	    AlarmState alarmState = alarm.getAlarmState();
	    alarmState.increaseNewAlarm(AlarmSeverity.MINOR, 1);
	    alarm.putClientProperty("alarm", "alarm");
	    flag = false;
	}
    }

//绘制网元
    public void paintWorld() {
	for (int i = 0; i < paintQueue.size(); i++) {
	    if (paintQueue.get(i) instanceof CircleParticle) {
	        ((CircleParticle) paintQueue.get(i)).paint();	
            }
	}
    }

 

 

//最后设置场景更新规则
private void game() {
    usedTime = 1000;
    t = 0;
    initWorld();
    while (flag) {
	t++;
	long startTime = System.currentTimeMillis();
	updateWorld();
	paintWorld();
	usedTime = System.currentTimeMillis() - startTime;
	try {
	    Thread.sleep(30);
	} catch (InterruptedException e) {
        }
    }
}

 这样一个监控容积率计算的平台就完成了,当然建立在各种物理引擎之上可以完成更加丰富的表达方式,如果您有这方面的需求和想法,欢迎和我们进行探讨!

粒子系统-2D粒子 2D粒子2D粒子Particles2D节点处理材质随机属性曲线Particles2D设置试一试粒子动画本地坐标与全局坐标脚本化粒子 假设你正在制作一个平台游戏,玩家在草地砖上奔跑。为了让它看起来很神奇,每一次脚步都会有草叶和尘土飞扬。你可以通过为每一次脚步创建许多Sprites来实现这种效果,让它们随机飞走,并在几秒钟后删除它们。但那样做起来会很麻烦,而且会占用大量的性能。相反,可以使用粒子! 在这一小时中,你将学习什么是粒子以及何时使用它们。你还将学习如何在场景中添加2D和3D粒子,以及如何编辑它们的(许 阅读详情

相关推荐

MATLAB项目,模拟曲柄滑块机构的运动学和动力学.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

综合布线系统管槽容量计算

宁波一舟投资集团有限公司 肖必龙 1、订货总量(总长度M)=所需总长+所需总长*10%+总点数*62、整数用线量(总长度M)=楼层*每层用线量每层用线量=[0.55*(最远点距离+最近点距离)+6]*楼层信息点数3、总长度=最短信息点长度+最长信息点长度/2*总点数*3.3*1.2注:得出的长度为英尺用线箱数计算用线箱数=总长度(单位米)/305+1用线箱数=总...

weixin_33714884的博客 322

基于MATLAB的Abel反演和Fowler–Milne诊断研究对HyperFill TWGMAW-P进行了电波形分析。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

java物理引擎库_基于APE物理引擎的管线容积率计算方法

容积率一般应用在房地产开发中,是指用地范围内地上总建筑面积与项目总用地面积的比值,这个参数是衡量建设用地使用强度的一项非常重要的指标。在其他行业,容积率的计算也非常重要,如产品利用率、管道使用率等等。那么在监控系统中,如何能够生动形象的表达容积率的计算,是的监控系统具有准确性、安全性的同时,还具备了多样性,良好交互性等等。 最近的游戏产业发展也非常迅速,在手持终端3D的游戏也越来越多,那么如果我们...

weixin_28731223的博客 191

aerosonde-fc-hybrid-uav-sim-main.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

YOLO26算法左侧目标识别+训练好的模型+504张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 83 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.9950 Precision | 0.9989 Recall | 1.0000 train/box_loss | 0.2388 train/cls_loss | 0.1435 val/box_loss | 0.1671 val/cls_loss | 0.1126 【训练过程分析】 自从开始这次 YOLO26 算法训练以来,我始终盯着那条 loss 曲线,就像盯着一个长跑运动员的冲刺曲线一样。最初几轮训练,loss 拉得很快,那段时间真的挺让人揪心的,生怕一不小心就错过了最好的时机。但到了中期,loss 曲线进入了漫长的平台期,就像马拉松中的长距离赛段,大家都保持着匀速前进。到了后期,loss 平稳下降,mAP50 和 mAP50-95 两个指标都稳定在了 0.9950,这个阶段就像是冲刺阶段,每一次的训练都能感受到模型在平稳而坚定地进步。在训练到第 83 轮时,所有的 loss 指标都趋于稳定,这意味着模型已经在我们的训练数据上收敛得很好。但在这整个过程中,我还是感受到了一些挑战,尤其是在平台期的那几轮,看着曲线徘徊不前,那种焦虑和不确定感真的磨得人没脾气。不过,最后的曲线走势还是让我们松了... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对集成于金属基材涂层中的电容式触摸传感器,提出了一种用于带状电容器电容计算的半数值模型,并基于Matlab平台实现了仿真分析。该模型结合解析方法与数值计算,采用有限差分法求解二维泊松方程,精确模拟传感器在金属背景下的电场分布,有效克服了金属基底对电容信号的屏蔽与干扰问题,显著提升了触摸检测的灵敏度与稳定性。研究系统探讨了传感器的几何结构、介电层材料特性、电极尺寸及间距等关键参数对电容响应的影响机制,建立了完整的建模流程与仿真框架,为高性能、高抗干扰能力的电容式触控器件在智能家居、工业控制面板及复杂电磁环境下的实际应用提供了理论支撑与技术路径。; 适合人群:具备电磁场与电磁波、数值计算方法基础,熟悉Matlab编程,从事传感器设计、人机交互技术开发、电子器件仿真及相关领域研究的科研人员、工程师及研究生。; 使用场景及目标:①面向金属表面集成的电容式触摸传感器进行高精度建模与性能优化;②为智能家电、工业设备等人机接口的触控模块提供抗干扰设计与仿真验证方案;③支撑相关科研课题的理论分析、算法开发与原型系统验证。; 阅读建议:学习者应结合提供的Matlab代码深入理解半数值建模的具体实现过程,重点掌握有限差分法在电场求解中的应用技巧,并可通过调整传感器结构参数与材料属性开展对比仿真,进而探究各因素对灵敏度的影响规律,全面提升对电容式传感机制的理解与工程化设计能力。

ACS6116 - 高级控制模块的任务集。该任务重点是模拟和控制猎鹰9号火箭着陆,采用受限和不受约束的MPC技术。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

【数据库技术】MySQL事务ACID与隔离级别解析:InnoDB与MyISAM存储引擎对比及适用场景设计

内容概要:本文系统讲解MySQL事务与存储引擎的核心知识点,重点围绕事务的ACID特性、并发问题与隔离级别(包括脏读、不可重复读、幻读)、MySQL默认的可重复读(RR)隔离级别如何通过MVCC和间隙锁避免幻读,以及InnoDB与MyISAM存储引擎在事务支持、锁机制、外键、全文索引等方面的对比。同时介绍了MEMORY存储引擎的特点及其适用场景,并结合实际面试高频问题进行深入剖析,帮助读者全面掌握MySQL在事务处理和存储引擎选择方面的关键技术细节。; 适合人群:准备后端开发面试、或希望深入理解MySQL核心机制的开发者,尤其是有一定数据库基础、工作1-3年的研发人员。; 使用场景及目标:①理解事务四大特性(ACID)的底层实现原理,如undo log、redo log、MVCC等;②掌握不同隔离级别之间的区别及MySQL默认RR级别的特殊性;③能够根据业务需求合理选择InnoDB与MyISAM存储引擎;④应对MySQL相关技术面试中的高频问题。; 阅读建议:此资料兼具理论深度与实战指导价值,建议结合MySQL官方文档和实际环境动手验证事务行为与锁机制表现,尤其关注RR级别下快照读与当前读的行为差异,以及行锁失效场景的模拟,以加深理解和记忆。

【通信测试自动化】基于可执行上下文的接口测试生成:通信行业高复杂度API质量保障方案设计

内容概要:本文探讨了接口测试自动化在通信行业的演进路径,从传统确定性脚本向“可执行上下文”驱动的智能化测试转型。面对接口数量激增、迭代周期缩短和测试数据复杂性的挑战,文章提出“可执行上下文”概念,强调测试成功不仅依赖API规范,还需融合真实测试数据、调用链依赖、业务断言逻辑和隐性规则。通过Skills拆解、RAG注入和Agentic编排三大核心技巧,构建结构化上下文资产,实现AI辅助生成高可执行性测试用例,并引入自愈断言机制提升测试鲁棒性。最终指出未来趋势是“治理下的自治”,即在保障安全与合规的前提下,推进自动化向多步骤工作流和语义感知扩展。; 适合人群:具备一定软件测试或自动化开发经验,从事通信行业系统测试、质量保障或接口自动化平台建设的研发与测试人员,尤其是关注AI在测试中应用的工程师和技术管理者。; 使用场景及目标:①解决通信系统中接口测试因数据不真实、依赖复杂导致的用例失效问题;②利用RAG与Skills方法提升AI生成测试用例的准确性与可审计性;③通过自愈断言和上下文复用增强测试稳定性与维护效率;④构建面向5G、O-RAN、BSS等复杂系统的可持续演进的自动化测试体系。; 阅读建议:此资源以工程实践为导向,结合代码示例深入剖析上下文驱动的测试生成机制,建议读者结合自身系统特点,重点借鉴上下文资产积累与RAG规则注入的方法,并在可控环境中试点Agentic测试与自愈断言,逐步实现从脚本自动化到上下文智能的跃迁。

用C#实现面向对象编程之继承和多态概念的示例程序

这是文章《面向对象编程之继承和多态》的配套示例程序。在学习面向对象编程时都学习到三个概念:封装、继承、多态。封装已经讲解过,可以翻一下本博客的发表记录。所谓的继承,就是父类已经实现的属性、方法等,子类也跟着有,无需重复实现。所谓的多态,就是父类只定义的属性、方法等的名称、数据类型、参数,具体由子类实现。

优快云首页 发布文章 优快云同步助手 阻尼器磁流变阻尼器MR Damper非线性(阻尼、滞回)特性研究(Matlab代码实现) 46 100 摘要:会在推荐、列表等场景外露,帮助读者

内容概要:本文系统整理了一套面向科研仿真的Matlab/Simulink资源合集,涵盖电力电子、控制理论、信号处理、电力系统、智能优化算法、机器学习、图像处理、路径规划、通信技术、雷达追踪、车间调度等多个前沿科研领域。重点资源包括三相PWM整流器双闭环控制、磁流变阻尼器非线性特性建模、双有源桥(DAB)DC-DC变换器优化控制、电网不平衡下的功率平衡策略、卡尔曼滤波状态估计、多类型路径规划与调度算法等,多数为顶级EI期刊成果复现,配套仿真模型、原理说明、参考文献及代码,具备较强的学术参考价值与工程实践意义。; 适合人群:适用于从事电气工程、自动化、控制科学与工程、信号与信息处理、计算机、机械电子等方向的硕士/博士研究生及科研人员,要求具备Matlab/Simulink基础操作能力及相关专业背景;也适合高校教师指导课程设计、毕业设计或科研项目开发。; 使用场景及目标:①辅助高水平论文研究与期刊成果复现;②支撑课程设计、毕业设计与科研项目开发;③深入理解先进控制策略(如VOC、SVPWM、模糊PID、滑模控制)与系统建模方法;④结合YALMIP等优化工具开展算法设计与验证;⑤拓展智能优化、机器学习、路径规划等跨学科研究能力。; 阅读建议:建议按照资源目录顺序系统浏览,优先关注标注“顶级EI复现”的高价值模型,结合公众号“荔枝科研社”提供的网盘资料与技术文档进行仿真实践,通过动手调试加深对算法逻辑与系统动态特性的理解,提升科研建模与创新能力。

SpringSecurity-思维导图

SpringSecurity-思维导图

永磁同步电机全速域无位置传感器控制simulink仿真

内容概要:本文围绕永磁同步电机(PMSM)全速域无位置传感器控制展开研究,重点对比分析了三种滑模速度控制策略——传统滑模控制(SMC)、超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)——在离散化仿真环境下的性能表现,并结合高阶滑模磁链观测器实现无传感器运行。理论分析表明,STSMC通过双增益机制将不连续控制作用嵌入积分项,有效抑制抖振并保持控制信号的连续性;FTSMC则利用非线性终端吸引子实现系统状态的有限时间收敛,且控制律不含切换项。文章系统阐述了各控制器的理论推导、参数整定方法及离散化实现过程,所构建的仿真模型支持从有感控制到无感控制的一键切换,以及控制器与观测器类型的灵活配置,所有算法均通过开发板集成测试验证。仿真结果表明,STSMC在动态响应与抖振抑制的综合性能上表现最优,FTSMC在稳态精度方面更具优势,而传统SMC存在明显的抖振问题。; 适合人群:具备一定电机控制理论基础和Simulink/Matlab仿真能力的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动系统开发的工程师。; 使用场景及目标:①深入理解无位置传感器控制中滑模控制策略的设计原理与实现方法;②掌握STSMC、FTSMC等先进滑模算法在PMSM控制系统中的应用技巧;③为高性能电机控制系统的仿真建模与工程实践提供技术参考和解决方案。; 阅读建议:建议读者结合文中提供的仿真模型进行实操演练,重点关注控制器参数整定与离散化实现细节,对比不同控制策略的仿真结果,深入理解其在实际系统中的适用条件与优化方向。

增强型PID-自适应-前馈-神经网络控制研究(Matlab代码实现)

内容概要:本文系统研究了“增强型PID-自适应-前馈-神经网络控制”复合控制策略,结合Matlab代码与Simulink仿真模型,深入探讨了传统PID控制与智能控制算法的深度融合方法。该策略通过引入自适应机制和前馈补偿,结合BP神经网络进行非线性系统建模与参数优化,并融合扩展卡尔曼滤波(EKF)等状态估计技术,提升控制系统在复杂动态环境下的响应速度、鲁棒性和控制精度。研究涵盖双闭环控制架构设计、神经网络训练流程、EKF状态融合等关键技术环节,适用于电机控制、电力电子变换器、无人机、微电网等高阶非线性系统的建模与仿真。配套资源丰富,包含多个可复现的Simulink模型、Matlab代码及参考文献,尤其支持高水平EI期刊成果的复现与验证。; 适合人群:具备自动控制理论基础和Matlab/Simulink仿真能力,从事控制工程、电气自动化、电力电子或智能系统研发的研究生、科研人员及工作1-3年以上的工程技术人员; 使用场景及目标:①深入研究先进PID控制策略在非线性系统中的优化应用;②实现神经网络与经典控制算法的协同设计与联合仿真;③开展状态估计、参数辨识与智能控制策略的实验验证;④复现并拓展高水平学术论文中的控制方法,支撑科研创新与项目开发; 阅读建议:建议结合提供的Matlab代码与Simulink仿真模型进行实践操作,重点剖析控制结构设计逻辑、神经网络训练过程及EKF状态估计的实现细节,按照文档说明逐步调试与优化,以全面掌握复合控制系统的建模、仿真与性能评估方法。

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+
上一篇: HTML5 实现Link跳线效果
下一篇: TWaver动画之雷达扫描效果
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值