当前位置: 首页 > article >正文

UE 计算闭合曲线的符号面积

UE 计算闭合曲线的符号面积

计算闭合曲线的符号面积,假设闭合曲线的顶点是位于 XY 平面中的顶点。

推导

polygon area
参考计算任意多边形的面积

当O点为原点时,根据向量的叉乘计算公式,各个三角形的面积计算如下:
S Δ O A B = 1 2 O A ⃗ × O B ⃗ S_{\Delta O A B} =\frac{1}{2} \vec{OA} \times \vec{OB} SΔOAB=21OA ×OB
S Δ O B C = 1 2 O B ⃗ × O C ⃗ S_{\Delta O B C} =\frac{1}{2} \vec{OB} \times \vec{OC} SΔOBC=21OB ×OC
S Δ O C D = 1 2 O C ⃗ × O D ⃗ S_{\Delta O CD} =\frac{1}{2} \vec{OC} \times \vec{OD } SΔOCD=21OC ×OD
S Δ O D E = 1 2 O D ⃗ × O E ⃗ S_{\Delta O DE} =\frac{1}{2} \vec{OD} \times \vec{OE } SΔODE=21OD ×OE
S Δ O E A = 1 2 O E ⃗ × O A ⃗ S_{\Delta O EA} =\frac{1}{2} \vec{OE} \times \vec{OA } SΔOEA=21OE ×OA

其中叉乘的计算公式:

O A ⃗ × O B ⃗ = A x ∗ B y − A y ∗ B x \vec{OA} \times \vec{OB } = A_{x} \ast B_{y}-A_{y}*B_{x} OA ×OB =AxByAyBx

S Δ O A B 、 S Δ O D E 、 S Δ O E A 与 S Δ O B C 、 S Δ O C D 符号相反 S_{\Delta O A B}、 S_{\Delta O DE}、S_{\Delta O EA}与S_{\Delta O B C} 、S_{\Delta O CD}符号相反 SΔOABSΔODESΔOEASΔOBCSΔOCD符号相反

S 总 = S Δ O A B + S Δ O D E + S Δ O E A + S Δ O B C + S Δ O C D S_{总}= S_{\Delta O A B}+ S_{\Delta O DE}+S_{\Delta O EA}+S_{\Delta O B C} +S_{\Delta O CD} S=SΔOAB+SΔODE+SΔOEA+SΔOBC+SΔOCD

UE 相关代码

UE::Geometry::CurveUtil::SignedArea2

	/** 
	 * Compute the signed area of a closed curve, assuming vertices in the XY plane
	 */
	template<typename RealType, typename VectorType>
	RealType SignedArea2(const TArrayView<const VectorType>& Vertices)
	{
		RealType Area = 0;
		int N = Vertices.Num();
		if (N == 0)
		{
			return 0;
		}
		for (int Idx = 0, PrevIdx = N-1; Idx < N; PrevIdx=Idx++)
		{
			const TVector2<RealType>& V1 = Vertices[PrevIdx];
			const TVector2<RealType>& V2 = Vertices[Idx];
			Area += V1.X * V2.Y - V1.Y * V2.X;
		}
		return static_cast<RealType>(Area * 0.5);
	}

http://www.kler.cn/news/325138.html

相关文章:

  • 剩余电流继电器在轨道交通地铁车站的应用
  • 2、Stable Diffusion
  • 906. 超级回文数
  • 数组的实现原理(Java版)
  • 分享几个可以免费使用GPT的网站【2024年必备】
  • 计算机知识科普问答--20(96-100)
  • 【Python】import 引入常用模块
  • 编程练习:探索数学问题的编程解决方案 P137
  • Unity中的功能解释(数学位置相关和事件)
  • android13 系统默认设置静态IP
  • VMware下Ubuntu找不到共享文件夹
  • 4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
  • Latex 自定义运算符加限定条件的实现
  • WPF入门教学十 资源与字典
  • Rust结构体初探
  • linux中实现多路复用服务器
  • 使用Python创建EXE运行器和截图工具
  • 【数据结构和算法实践-排序-总结】
  • 9.24作业
  • Uniapp 打包后的横屏控制
  • 【JavaEE初阶】多线程7(面试要点)
  • MacOS安装MindSpore(2024年最新)
  • 创意实现!在uni-app小程序商品详情页轮播中嵌入视频播放功能
  • 成都睿明智科技有限公司可靠吗?
  • SpringBoot--为什么Controller是串行的?怎样才能并行?
  • uni-app之旅-day01-home页
  • Python 课程18-SQLAlchemy
  • Stable Diffusion绘画 | LCM模型:实现秒出图
  • 多旋翼无人机光伏发电站吊运技术详解
  • nodejs基于vue电子产品商城销售网站的设计与实现 _bugfu