【Godot4.3】胶囊形的偏移获取法

概述

之前用半圆弧拼接的方式求过胶囊形,在逐渐熟练使用Geometry2D的过程中,发现通过线段求端点是圆角类型的偏移多边形,获得的就是胶囊形。

所以我们有了第二种胶囊形求法。

测试代码

@tool
extends Node2D## 横向宽度
@export var width:float = 100.0:set(val):width = valqueue_redraw()## 偏移半径
@export var r:int = 20:set(val):r = valqueue_redraw()func _draw() -> void:var half_x = width/2.0 - rvar points = [Vector2.LEFT * half_x,Vector2.RIGHT * half_x]var polygon = Geometry2D.offset_polygon(points,r,Geometry2D.JOIN_ROUND)[0]polygon.append(polygon[0]) # 闭合draw_polyline(polygon,Color.AQUAMARINE,1)   # 绘制胶囊形draw_polyline(points,Color.WHITE,1)   # 绘制线段

测试效果

总结函数

# 基于多边形偏移的胶囊形求取函数
func capsule(width:float,radius:float) ->PackedVector2Array:var half_x = width/2.0 - radiusvar points = [Vector2.LEFT * half_x,Vector2.RIGHT * half_x]var polygon = Geometry2D.offset_polygon(points,radius,Geometry2D.JOIN_ROUND)[0]polygon.append(polygon[0]) # 闭合return polygon

应用:胶囊链

通过将上面的胶囊形求法应用于链形结构,可以获得胶囊链的效果。

为了方便所有链结构使用,我为Chain类型,添加了一个draw_capsules方法,代码如下:

# 绘制胶囊
func draw_capsules(canvas:CanvasItem,r:=10.0,color:=Color.WHITE,fill:=true,border_width:=1.0) -> void:for i in range(points.size()-1):var seg = [points[i],points[i+1]]var len = lens[i]var capsule = Geometry2D.offset_polygon(seg,r,Geometry2D.JOIN_ROUND)[0]capsule.append(capsule[0]) # 闭合if fill:canvas.draw_colored_polygon(capsule,color)else:canvas.draw_polyline(capsule,color,border_width)

在这里插入图片描述

总结

这只是一个基于Geometry2D改变特殊图形求取思路的案例之一,实际上通过偏移、布尔运算,你可以用几行代码求出一些原先用向量旋转、向量加减法以及线性变换思路弯弯绕半天的图形。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146975.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop

总结 Deskpins 功能单一,拖到窗口上窗口就可以置顶并且标记钉子标签,大小 104 KB,开源位置:https://github.com/thewhitegrizzli/DeskPins/releases WindowTop 功能完善全面强大,包括透明度、置顶、选区置顶等一系列功…

SQL server学习01-SQL server环境配置

目录 一,手动下载及安装 microsoft .net framework 3.5 1,下载 2,安装 二,安装SQL server2014 1,下载 2,安装 3,启动SQL server服务 三,下载及安装Microsoft SQL Server…

C Prime Plus 第6章习题

你该逆袭了 红色标注的是:错误的答案 蓝色标注的是:正确的答案 绿色标注的是:做题时有疑问的地方 橙色标注的是:答案中需要着重注意的地方 练习题 一、复习题1、2、3、4、5、我的答案:错误正确答案: 6、7、…

ubuntu 安装minikube,并拉取k8s镜像

不要使用最新版,重要的事情说三遍,刚开始也是最求新一点的版本,但问题很多,主要是版本之间的依赖问题,不是某个依赖的版本不支持某些功能,就是依赖之间的版本不能对应上,所以就降低几个版本&…

行业人工智能研究-Python自监督方式学习图像表示算法

学术界人工智能研究落后于工业界 摘要 行业或工业界在人工智能研究上超出学术界,并占据着大量的计算力,数据集和人才诱人的薪水和明朗的预期吸引大量人才离开学术界,涌入行业或工业界即使,比如Meta开源其人工智能模型&#xff0…

实验:WLAN无线综合实验

无线综合实验的概述: WLAN无线综合实验是一种针对无线网络技术的综合性实验,旨在通过实践操作加深对无线局域网(WLAN)技术的理解和应用能力。以下是对该实验的详细概述: 实验目的 掌握认证AP上线的配置方法&#xff…

[SAP ABAP] 创建域

我们可以使用事务码SE11创建域 输入要创建的域的名称,然后点击创建 输入简短描述,选择数据类型和输入字符数 激活并保存域,创建的域才能够生效

pg入门18—如何使用pg gis

1. 下载postgre gis镜像 2. 运行镜像 docker run -p 15432:5432 -d -e POSTGRES_PASSWORDAb123456! postgis/postgis:12-3.4-alpine 3. 使用gis # 进入容器,登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用…

Spring Boot 入门:解锁 Spring 全家桶

前言 Spring 全家桶是现代 Java 开发者不可或缺的工具集,它提供了从轻量级的框架到微服务架构的完整支持。本文将带你快速了解 Spring 框架、核心概念如 IoC(控制反转)和 AOP(面向切面编程),并深入介绍 Sp…

YOLOv10多模态 结合Transformer与NMS-Free 融合可见光+红外光(RGB+IR)双输入【附代码】

文章目录 前言视频效果代码获取文章概述必要环境一、模型训练1、 定义数据1.1、数据集结构1.2、定义data.yaml 2、 运行方法运行效果 二、模型验证运行方法运行效果 三、模型推理3.1. 推理图像1. 参数定义2. 运行方法运行效果 3.2. 推理视频1. 参数定义2. 运行方法运行效果 四、…

构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)

引言 在数字化时代,网络安全已成为全球关注的焦点。随着互联网技术的快速发展和应用的广泛深入,网络安全形势日益严峻。特别是分布式拒绝服务(DDoS)攻击,以其破坏性强、难以防范的特点,对个人、企业乃至国…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…

Type-C 诱骗取电快充协议芯片,支持取电电压5V、9V、12V、15V、20V

‌XSP01A快充协议芯片‌是一款集成USB Power Delivery(PD) 2.0/3.0快充协议的USB-C/Type-C多功能取电芯片 它支持从手机充电器、车充等电源上取电给产品供电。这款芯片的优势在于其价格便宜,同时能够实现快充,对于不需要支持太多协议的设备来说&#x…

DRV8825步进电机驱动详细说明书————含接线图

最近玩步进电机时候,发现步进电机驱动种类多;A4988,drv8825,tb6600,lv8731……;tb6600驱动电流可达4A,1600细分,十分强大,但是体积大,用在平衡车上不太合适。 drv8825加散热器驱动电…

安装SQL Server遇到的问题

出现了一和二的问题,最后还是通过三完全卸载sqlserver安装成功了 一.安装过程中依次报错 1.MOF编译器无法连接WMI服务器。原因可能是语义错误(例如,与现有WMI知识库不兼容)或实际错误(例如WMI服务器启动失败)。 2.PerfLib 2.0计数器removal失败&#xf…

HarmonyOS鸿蒙开发实战(5.0)表情图片聊天案例实践

鸿蒙HarmonyOS NEXT开发实战往期文章必看(持续更新......) HarmonyOS NEXT应用开发性能实践总结 HarmonyOS NEXT应用开发案例实践总结合集 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门…

混合开发-JSBridge

1.1 什么是混合开发? 混合开发是一种融合了原生开发和Web开发优势的移动应用开发方式。 具体来说,混合开发通常指的是利用一种框架或平台来创建应用程序,这种程序结合了原生应用的一些功能和特性(比如访问设备的摄像头、相册、GPS、蓝牙等…

DAMODEL——Llama3.1的部署与使用指南

Llama3.1的部署与使用指南 在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了…

Windows上通过VirtualBox安装Linux虚拟机

目录 一、安装VirtualBox 1. 下载VirtualBox 2. 安装VirtualBox 二、使用VirtualBox安装Linux系统 1. 下载Linux镜像 2. 使用VirtualBox新建虚拟环境 三、常见问题解决办法 1. Terminal打不开系统字符乱码 2. 窗口小和分辨率不匹配 一、安装VirtualBox 1. 下载Virtu…

10.2 溪降技术:双重检查

目录 10.2 双重检查概览观看视频课程电子书:双重检查场景场景 1场景 2 个人责任示例 1示例 2 总结 10.2 双重检查 概览 俗话说:“江山易改,本性难移”。在我们开始体验峡谷探险时,培养良好的习惯对我们的进一步发展至关重要。在所…